我是SML編程的新手,我創建了一個函數來從整數列表中刪除原子A的出現。這個列表可以嵌套到任何級別, 意味着我們可以擁有像[1,2,3]這樣的列表,並且我們可以擁有像[[1,2],[2,3]]這樣的列表以及像[[[ 1,2],[1,2]],[[2,3],[2,3]]]。
所以我的問題是如何檢查給定的項目是列表還是原子,因爲我到目前爲止還沒有在SMLNJ中找到任何這樣的函數?
我已經創建了一個函數來檢查列表是否爲空,然後調用helper迭代函數來檢查列表的頭部是列表還是原子。如果它是一個原子,那麼用另一個原子替換它,並繼續與尾部的其餘部分。在SML中區分原子和列表
如果我檢查列表頭的尾部是否爲空,那麼它會給出一個錯誤,因爲尾部函數只能有一個列表。
所以我必須這樣做,如 tl([hd(a))
,如果我這樣做,那麼它將永遠是空的。
如果我將它應用到第一個列表中,我將head設置爲1並將它封裝在[]中的[]結果中,因此尾部將爲[]。同樣的方法,如果我得到第二個列表的頭將[1,2]並將其包裝在[]中將導致[[1,2]],因此尾部再次爲[]。 那麼有什麼辦法可以檢查給定的物品是原子還是列表?
在此先感謝您的回覆。
你不能在運行時檢查什麼類型的東西 - 這在編譯時就已經知道了。我有一種感覺,你在這個任務的描述中漏掉了一些東西。 – molbdnilo 2014-10-20 13:05:56
沒有,這是非常多的 實際上原來的問題是在計劃,但教授希望我們在SML /新澤西州實施這個,所以我在這裏沒有線索如何做到這一點。 這是最初的方案問題。 編寫一個方案功能,它採用兩個原子和一個列表作爲參數 並返回一個與參數列表相同的列表,除了所有出現的 列表中的第一個給定原子被替換爲第二個給定原子 無論多深第一個原子是嵌套的。 現在我的目標是在SML/NJ中實現這個 – 2014-10-20 13:46:45