72 lines
1.2 KiB
ReStructuredText
72 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")))
|