71 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
=============
 | 
						||
型別
 | 
						||
=============
 | 
						||
 | 
						||
簡單型別
 | 
						||
=============
 | 
						||
 | 
						||
數字
 | 
						||
-------------
 | 
						||
 | 
						||
* `int`:整數,初期可用 64 位元帶符號整數處理。
 | 
						||
    
 | 
						||
* `dou`:雙精度浮點數
 | 
						||
 | 
						||
字串
 | 
						||
-------------
 | 
						||
* `str`:字串
 | 
						||
 | 
						||
暫不支援 `char`。
 | 
						||
 | 
						||
布林
 | 
						||
------------
 | 
						||
* `bool`:布林值。#t:真值,#f:假值。
 | 
						||
 | 
						||
複雜型別
 | 
						||
============
 | 
						||
 | 
						||
自訂型別
 | 
						||
------------
 | 
						||
可以自訂 product type 或 sum type。為求簡化,不支援型別當參數。
 | 
						||
 | 
						||
.. function :: (Type TYPE-NAME (Type-constronctor x1 x2 ...))
 | 
						||
 | 
						||
.. function :: (Type TYPE-NAME (U (Type-const1 x1 x2 ...)(Type-const2 x1 x2 ...)...))
 | 
						||
 | 
						||
.. function :: (Type TYPE-NAME (Type-constronctor))
 | 
						||
 | 
						||
.. function :: (Type TYPE-NAME (U (Type-const1)(Type-const2)...))
 | 
						||
 | 
						||
U 是 union 的意思,指 Sum Type。
 | 
						||
 | 
						||
例如:
 | 
						||
 | 
						||
::
 | 
						||
 | 
						||
  (Type IntPair (IntPair Int Int))
 | 
						||
 | 
						||
 | 
						||
如果可以模式匹配,就變這樣:
 | 
						||
 | 
						||
::
 | 
						||
 | 
						||
  (\ ((IntPair x))
 | 
						||
    (match (x)
 | 
						||
      ((IntPair 7 9) 9)
 | 
						||
      ((IntPair 8 a) a)
 | 
						||
      ((IntPair x y) (+ x y))))
 | 
						||
 | 
						||
Sum Type 的用法:
 | 
						||
 | 
						||
(Type OrigColor (U (Red)(Green)(Blue))) ; 三原色
 | 
						||
 | 
						||
如果可以模式匹配,就變這樣:
 | 
						||
 | 
						||
::
 | 
						||
 | 
						||
  (orig-color-to-str ((OrigColor x))
 | 
						||
    (match (x)
 | 
						||
      ((Red) "Red")
 | 
						||
      ((Green) "Green")
 | 
						||
      ((Blue) "Blue")))
 |