【发布时间】:2017-01-20 18:36:54
【问题描述】:
我们目前正在处理大学的一项任务,我们并不完全理解(请没有解决方案,但只有想法或建议)。
给出的是一个类型:
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)
在这种情况下,我们有一个输入字符串,它是“Hello”,另一个是“World”,然后我们将 c 放入“emptyString”。 这适用于一个字符串,因为当我们在控制台中键入以下内容时:
a = (myCode "Hello" "World" emptyString) ""
我们在输入“a”上得到“世界”。现在是困难的部分:我们应该能够存储其中的几个(搜索它们是另一项任务,现在不需要)。我们认为我们现在可以在声明另一个变量时使用“a”:
b = (myCode "1" "2" a) "Hello" "World" emptyString "")
这将在“b”中调用保存为“a”的函数,并在其中调用“emptyString”。 正如您可能已经猜到的那样 - 它不起作用!从现在开始,我们真的很茫然。
当您到达这部分时,这意味着您花时间理解了我们对任务的复杂解释 - 非常感谢。
提前感谢您的建议和帮助!
【问题讨论】:
-
什么是“商店”?什么是“2x 字符串”?
-
这是对
Phonebook练习的混淆吗? -
看起来和最近的问题stackoverflow.com/questions/41753366/…的作业一样
-
a指的是单个字符串,而不是函数。在与b的绑定中,它不是myCode的有效参数。即使是这样,myCode的结果也是MyType类型的值,它适用于 one 值,而不是 4。您似乎对函数的定义方式和应用了,这使得破译你想要做什么变得非常困难。
标签: function haskell lambda anonymous-function