0

我研究函数式范式已经有一段时间了,在这段时间里,我取得了一些成功,也犯了一些错误,而正是这些错误让我真正学到了最多的东西。我相信学习计算范式的一个好方法是从该范式中获取一些语言并大规模测试相同的算法。正是当人们意识到,并非以一种语言接受的所有内容都在另一种语言中共享。这使得找到对一组语言通用的构造路径成为可能,因此在本质上具有更纯粹和自信的逻辑抽象推理。我的旅程与功能逻辑课程的准备有关。

在这项研究中,我正在尝试开发(作为一个学习过程)检测头部、尾部、列表的最后一个元素的函数,以及在语言中经常发现的现成的其他元素。

我从一种名为 Hope 的实验性语言开始,我搬到了 Haskell,然后我去了 OCaml、ML (SML/NJ) 和 F#。现在我正在用米兰达语言做同样的测试。

在此介绍之后,我几乎没有找到有关米兰达语言的信息,并且在我可以访问的一组材料中,我没有找到某些我想知道的信息,如果有人有这方面的知识并且可以分享它:

如果存在,如何在 Miranda 中使用匿名函数 (lambda)?

先感谢您。

4

2 回答 2

1

米兰达没有 lambda。但如果不使用延续,也没有问题。作为一种解决方法,我总是使用:

result = foldl lambda 0 [1..10]
         where lambda x y = x+y

而不是 Haskell 的:

result = foldl (\x y -> x+y) 0 [1..10]

干杯,Dusterbraut

于 2021-08-27T00:08:16.040 回答
0

经过进一步的研究,我最终放弃了信息,因为我没有找到任何东西。就在那时,我看到了 Kevin Glynn 和 Bernard Pope 于 1999 年出版的文件“米兰达程序员的 Haskell”,该文件在第 8 页提供了信息(http://www.berniepope.id.au/assets/files/mira2hask.pdf) Miranda 只对命名函数进行操作。

在 Miranda 中,所有函数都必须命名。在 Haskell 中,可以使用 lambda 表示法编写函数对象。函数定义由“”组成。后面是参数列表、“->”和主体表达式 (...)。

于 2020-12-30T20:22:02.513 回答