summaryrefslogtreecommitdiff
path: root/files/practicum/StdQ.dcl
blob: 71d3f5a4c196347ddeba4debb59787ec3c528ecc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
definition module StdQ

import StdOverloaded

::	Q

instance ==		Q			// gelijkheid van rationale getallen
instance <  	Q			// ordening op rationale getallen

instance +		Q			// optellen van rationale getallen
instance -  	Q			// aftrekken van rationale getallen
instance zero	Q			// het neutrale element van optellen (x+zero = zero+x = x)

instance *  	Q			// vermenigvuldigen van rationale getallen
instance /		Q			// delen van rationale getallen
instance one	Q			// het neutrale element van vermenigvuldigen (x*one = one*x = x)

instance abs	Q			// de absolute waarde van een rationaal getal
instance sign	Q			// het teken van het rationale getal
instance ~		Q			// teken-omkering van het rationale getal

isInt :: Q -> Bool			// test of het rationale getal een geheel getal representeert
instance toInt  Q			// zet een rationaal getal om naar een Int (met evt. afronding)
instance toReal Q			// zet een rationaal getal om naar een Real (bij benadering)

class toQ a :: a -> Q
instance toQ Int			// zet een Int om naar een rationaal getal
instance toQ Real			// zet een Real om naar een rationaal getal
instance toQ (Int,Int)		// zet een (t,n) om naar rationaal getal met t de teller, en n de noemer
instance toQ (Int,Int,Int)	// zet een (x,t,n) om naar het rationale getal toQ (x*n+t,n)
instance toString Q			// toon een rationaal getal q als "s(x+t/n)" zodanig dat:
							// q = x + t/n (volgens wiskundige regels)
							// 0 < abs (t/n) < 1
							// s = "" als q>=0; s = -1 anders
							// vb: toString (toQ  11 2) = "(5+1/2)"
							// vb: toString (toQ -11 2) = "-(5+1/2)"
							
							// als abs (t/n) == 0, toon dan alleen x
							// vb: toString (toQ 10 2) = "5"