Haskell-让一个函数调用一个函数



我们目前正在处理一项来自大学的任务,我们还不完全理解(请不要解决方案,只有想法或建议)。

给出的是一种类型:

type MyType = String -> String

现在我们正在尝试有一个函数,它接受2个字符串和一个函数(类型),然后给出一个函数的

myCode :: String -> String -> MyType -> MyType

我们已经实现了一个功能,可以用作MyType one:

emptyString :: MyType
emptyString :: (a -> "")

任务是能够存储几个2x字符串。这是我们目前的想法:

myCode :: String -> String -> MyType ->MyType
myCode a b c = (x -> b)

在这种情况下,我们有一个输入字符串,它是"Hello",另一个是"World",然后作为c,我们放入"emptyString"。这适用于一个字符串,因为当我们在控制台中键入以下内容时:

a = (myCode "Hello" "World" emptyString) ""

我们在输入"a"上得到"世界"。现在最困难的部分是:我们应该能够存储其中的几个(搜索它们是另一项任务,现在不需要)。我们认为现在可以在声明另一个变量时使用"a":

b = (myCode "1" "2" a) "Hello" "World" emptyString "")

这将在"b"中调用另存为"a"的函数,并在其中调用"emptyString"。正如你可能已经猜到的那样——它不起作用!从现在开始,我们真的不知所措。

当你到达这一部分时,意味着你花了时间来理解我们对任务的复杂解释——非常感谢。

感谢您的建议和帮助!

从评论中amalloy链接的问题来看,您似乎正在尝试基于类似延续传递风格的范式构建一个电话簿。

基本上,你的类型应该发生什么

myCode :: String -> String -> MyType -> MyType

您将生成一段类型为MyType的数据dat = myCode a b pb。因此,您可以使用s :: String查询dat,它将输出另一个String。在dat s的操作中,如果将其扩展到定义

dat s = myCode a b pb s

您可以访问三个字符串,ab以及pb s返回的任何字符串。您将递归地构建功能,可以使用abs做一些事情,也可以将其推到pb,让continuation处理它。

希望这能有所帮助,不要泄露太多信息。

最新更新