0
我試圖迭代自定義數據類型的列表,以及確切的特定類型的值。在這種情況下,我想年齡從列表:基於類型從列表中提取值?
data MyData = Age Int | DOB Int | Name String | Address String
myList = [Age 89, DOB 13, Age 33, Name "Barbra", Address "103 Lane"]
myFunction :: [MyData] -> MyData
myFunction (x : xs) = if x == Age then x : myFunction xs else myFunction xs
錯誤:
"Age is applied to too few arguments"
請告訴我這種情況的最佳解決方案?
在一個命令式的lang中,像C++一樣,一些編譯器會將'x == Age'解釋爲'x是Age'類型的,這就是方法背後的瘋狂...... –
我不認爲這是屬性命令式語言:o這就是語言如何處理'==',但這不是一個特別重要的事情。可能與函數式語言中的可能性一樣:) –
另外,請記住,'x'永遠不是'Age'類型',因爲'Age'不是一種類型。 'x'總是類型爲'MyData'。 –