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