繁体   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