0
有沒有一種方法可以爲整個數字定義數據類型。即,0,1,2,...不是零,一個......單獨。sml中的遞歸數據類型
我想定義一組整數。使用0,n,n + 1遞歸。 我試過這樣的事情:datatype nat = 0 | n | n + 1。但是它幾乎不能工作,因爲它不會將0識別爲整數?
我將不勝感激任何幫助。
有沒有一種方法可以爲整個數字定義數據類型。即,0,1,2,...不是零,一個......單獨。sml中的遞歸數據類型
我想定義一組整數。使用0,n,n + 1遞歸。 我試過這樣的事情:datatype nat = 0 | n | n + 1。但是它幾乎不能工作,因爲它不會將0識別爲整數?
我將不勝感激任何幫助。
由於自然數集是可數無限,無法枚舉所有的情況。
您可以通過Peano numbers概念代表自然數:
datatype peano = Zero | Succ of peano
的數據類型是非常簡單的,它只定義0
,並確保每個自然數都有一個後繼者。例如,2實際上表示爲Succ (Succ Zero)
。
fun count Zero = 0
| count (Succ p) = 1 + count p
使用類似的技術,你可以像你有一個自然數建立add
,sub
,mult
功能。
是的,但我需要使用使用0,1,2,3而不是succ(succ(succ(zer0)))的數據類型。 所以我可以把它看作是否定的,對於無限的0,1,2,...是不可能的? – 700resu
是的,你是對的。 – pad
@ user1710036爲什麼你需要這種表示,如果你不介意我的問題? – waldrumpus