list 1 2 3 為什麼不可以是 cons cons cons nil 1 2 3

時間 2021-05-31 06:46:57

1樓:李欣宜

和這個問題同構,我覺得我也沒必要重複回答,可以看一下那個問題下我最喜歡的回答。

定義三元組為為<, c>比定義為>有什麼優勢?

2樓:CodeArhat

Scheme沒預定義nil,Common Lisp才有。

CL函式形式的引數(嚴格)自左向右求值,這決定了cons的巢狀順序,沒法改。

想只用cons函式構造'(2 3)就必須先造出'(3),作為引數傳到(cons 2 ...)

cons單元倆指標,有先後順序。(cons nil 1)成了點對,再串也不是鍊錶了。

3樓:

Racket(原scheme)裡面很重要的一點就是資料型別的問題,任何乙個函式都要有確定的輸入值的資料型別,可能是Any,可能是List,可能是Num,可能是(anyof Num Bool List),也有可能是你自己(define-struct產生的。對於函式的使用的首要條件就是要求滿足函式要求的資料型別。接下來我們看Racket官網。

在htdp-beginner這個級別裡,cons作為乙個函式要求第乙個argument是Any,第二個是List。而關於List我們知道empty本身也是List這個型別的。沒有看懂的話也沒關係,我們可以做個實驗。

(以上所有內容均基於以下猜想:題主的nil是我說的empty。既然又有了猜想,我們就繼續做實驗。

躺。。。)

歌哥鴿擱胳

謝題主提醒,null在racket裡等於nil。好的,我們再試一下。

我的猜想是成立的。因此已經被證明。thus it has been demonstrated.

4樓:開源醬

你可以自己定義乙個 list 啊(逃

我之前和傘哥聊到過設計一種 list 是左結合的 Lisp,那樣 (list 1 2 3) 出來的就是 (((1 . 2) . 3) . nil)

5樓:Wang Namelos

樓上的同志們,這個跟哪種Lisp好像沒關係吧,John McCarthy的版本應該也是這樣。

不過題主這個問題好像不太對,即使是後面的形式,也得是(cons (cons (cons nil 3) 2) 1)意思上猜類似吧。不然後面解出來的head是3。

如果執意要寫成(cons (cons (cons nil 1) 2) 3)的話讀head就變成開銷最大的操作了,就和第乙個完全不同了。

至於前後哪個元素可能把tail放在後面好看些,不然為啥叫tail呢。而且寫成(cons (cons (cons nil 3) 2) 1)也不好讀,你關心的第乙個元素跑到最後了。

為什麼我不可以是富二代?

AriKarenH 這個要問你爸爸吧,不過你可以努力當富一代,讓你的小孩當上富二代。本來每個人出生就是不公平的,與其去感嘆命運的不公平,不如把這個時間去學習一些有用的東西。 無為 下面是我以前寫的日記 我為什麼是我?以前這個問題困擾了我很久,現在有了乙個初步的答案。首先,我們人類是乙個整體,他由各個...

為什麼妲己可以是狐狸精,但是花木蘭不可以會「氣」?

諸葛毛豆 沒有人不能理解或不接受氣的概念。事實上類似的設定在國內的影視 文學作品中比比皆是。而是觀眾無法理解花木蘭中 氣 到底是什麼,並且有什麼存在的意義。氣不過是電影所夾帶的私貨。沒有氣的花木蘭是乙個勇敢的女性形象,而有氣的花木蘭則是乙個被排斥的,被迫壓抑自己的女性形象。這純粹是為了配合女權主題,...

為什麼不可以喜歡張國榮?

傲雪寒梅 你喜歡誰是你的自由,每個人的愛好不同,品味不同,因為每個人的原生家庭不同,藝術細胞不同,接受的教育不同,欣賞的角度不同,沒必要糾結這個問題,這都不算問題,沒必要。 恐同 抑鬱症 喜歡冷門明星 不是很火 他們不認識。喜歡小鮮肉,那是青春期正常的行為。喜歡劉德華成龍這是正常的,積極向上的榜樣,...