我有一個學校的任務,我必須寫一個函數'check()',以列表作爲參數。該列表需要3個元素。列表的第一個元素應該是一個運算符,其他兩個元素應該是數據類型。函數調用的示例可能如下所示:Scheme - 自定義數據類型?
(check '(+ int int))
它應該在哪裏更恰當地說Int。不應該涉及任何數字。這個函數應該返回正確的輸出數據類型,具體取決於你在操作中使用的數據類型。例如:
(check '(+ int int))
應返回int。
它還說: 「你的程序應該認識到運營商
'+', ' - ', '*', '/', '商', '<', '>', '=', 「和」或」 和數據類型: ‘詮釋’,‘布爾’和‘真實’
試運行的一個例子可能是這樣的:
> (check '(+ int int))
int
> (check '(* int bool))
The operator '*' does not accept bools!
> (check '(= (< (+ int int) (quotient int int)) (> int int)))
bool
> (check '(* int (+ real int)))
The operator '+' must have operands of the same numerical type!
這個任務拉着我的令人驚訝,因爲我從來沒有真正在Scheme中製作過任何自定義數據類型,甚至不知道這是可能的。我對Scheme(和程序)總的來說)。我目前不知道從哪裏開始或做什麼!我需要定義int,bool和real嗎?我需要定義操作員嗎?如果是這樣......怎麼樣?有誰能夠幫助我?告訴我從哪裏開始或進程應該是什麼樣子......
問題不一致。在一個例子中,'( - int real)'返回'real'(這很好),但是在另一個例子中,'(+ real int)'拋出一個錯誤而不是返回'real'。這可能是假的。 –
@ ChrisJester-Young哦,沒有注意到。我的錯。測試運行輸出是正確的。生病編輯我的帖子。 – Schytheron