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)
在这种情况下,我们有一个输入字符串,它是 "Hello",另一个是 "World",然后作为 c,我们输入 "emptyString"。
这适用于一个字符串,因为当我们在控制台中键入以下内容时:
a = (myCode "Hello" "World" emptyString) ""
我们在输入 "a" 上得到 "World"。现在是困难的部分:我们应该能够存储其中的几个(搜索它们是另一项任务,现在不需要)。我们认为我们现在可以在声明另一个变量时使用 "a":
b = (myCode "1" "2" a) "Hello" "World" emptyString "")
这将在 "b" 中调用保存为 "a" 的函数,并在其中调用 "emptyString"。
您可能已经猜到了 - 它不起作用!而我们现在真的很茫然,不知如何继续下去。
当你到达这一部分时,意味着你花时间理解了我们对任务的复杂解释 - 非常感谢。
提前感谢您的建议和帮助!
从评论中 amalloy 链接的问题来看,您似乎正在尝试基于类似范式的连续传递样式来构建电话簿。
基本上,您的类型应该发生什么
myCode :: String -> String -> MyType -> MyType
就是你要生成一条数据dat = myCode a b pb
,类型是MyType
。因此,您可以使用 s :: String
查询 dat
,它会输出另一个 String
。在dat s
的运算中,如果展开到定义,
dat s = myCode a b pb s
您可以访问三个字符串,a
、b
以及任何 pb s
returns。您将递归地构建功能,或者通过使用 a
b
和 s
做一些事情,或者将它推到 pb
,让延续处理它。
希望这对您有所帮助,但不要透露太多。
我们目前正在处理大学的一项任务,我们还没有完全理解(请不要解决方案,只提供想法或建议)。
给出的是类型:
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" 上得到 "World"。现在是困难的部分:我们应该能够存储其中的几个(搜索它们是另一项任务,现在不需要)。我们认为我们现在可以在声明另一个变量时使用 "a":
b = (myCode "1" "2" a) "Hello" "World" emptyString "")
这将在 "b" 中调用保存为 "a" 的函数,并在其中调用 "emptyString"。 您可能已经猜到了 - 它不起作用!而我们现在真的很茫然,不知如何继续下去。
当你到达这一部分时,意味着你花时间理解了我们对任务的复杂解释 - 非常感谢。
提前感谢您的建议和帮助!
从评论中 amalloy 链接的问题来看,您似乎正在尝试基于类似范式的连续传递样式来构建电话簿。
基本上,您的类型应该发生什么
myCode :: String -> String -> MyType -> MyType
就是你要生成一条数据dat = myCode a b pb
,类型是MyType
。因此,您可以使用 s :: String
查询 dat
,它会输出另一个 String
。在dat s
的运算中,如果展开到定义,
dat s = myCode a b pb s
您可以访问三个字符串,a
、b
以及任何 pb s
returns。您将递归地构建功能,或者通过使用 a
b
和 s
做一些事情,或者将它推到 pb
,让延续处理它。
希望这对您有所帮助,但不要透露太多。