簡體   English   中英

Haskell-有一個函數調用一個函數

[英]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

您可以訪問三個字符串ab和任何pb s返回。 您將遞歸構建的功能,無論是做什么用a bs ,或者推下山的路到pb ,讓繼續處理它。

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM