[英]Haskell - have a function call a function
目前,我們正處於大學的一項任務中,我們對此尚不完全了解(請提供解決方案,僅提供想法或建議)。
給出的是一種類型:
type MyType = String -> String
現在,我們試圖擁有一個函數,該函數接受2個字符串和一個函數(類型),然后給出一個函數(類型)
myCode :: String -> String -> MyType -> MyType
並且我們已經實現了一個可以用作MyType的函數:
emptyString :: MyType
emptyString :: (\a -> "")
任務是能夠存儲幾個2x字符串。 這是我們目前的想法:
myCode :: String -> String -> MyType ->MyType
myCode a b c = (\x -> b)
在這種情況下,我們有一個輸入String,它是“ Hello”,另一個是“ World”,然后在c中輸入“ emptyString”。 這適用於一個String,因為當我們在控制台中鍵入以下內容時:
a = (myCode "Hello" "World" emptyString) ""
我們在輸入“ a”上得到“世界”。 現在最困難的部分是:我們應該能夠存儲其中的一些(搜索它們是另一項任務,現在不需要)。 我們認為聲明其他變量時現在可以使用“ a”:
b = (myCode "1" "2" a) "Hello" "World" emptyString "")
這將在“ b”中調用保存為“ a”的函數,並在其中調用“ emptyString”。 您可能已經猜到了-它不起作用! 從現在開始,我們真的對如何進行下去感到茫然。
當您達到這一部分時,這意味着您花了一些時間來理解我們對任務的復雜解釋-非常感謝。
感謝您的建議和幫助!
從合金中注釋鏈接的問題來看,您似乎正在嘗試基於像范式這樣的連續傳遞樣式來構建電話簿。
基本上,您的類型應該發生什么
myCode :: String -> String -> MyType -> MyType
是您將生成一條數據類型為MyType
的數據dat = myCode ab pb
。 因此,您可以使用s :: String
查詢dat
,它將輸出另一個String
。 在dat s
的操作中,如果將其擴展為定義,
dat s = myCode a b pb s
您可以訪問三個字符串a
, b
和任何pb s
返回。 您將遞歸構建的功能,無論是做什么用a
b
和s
,或者推下山的路到pb
,讓繼續處理它。
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.