问题标签 [miranda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
175 浏览

haskell - 除了 Haskell 和 Miranda 之外,还有其他默认懒惰评估的语言吗?

维基百科页面上只提到了 Haskell 和 Miranda。

我不确定elm

其他一些语言使得声明要延迟计算的函数变得特别容易。

是否有编程语言可以进行全局切换,比如延迟评估模块或脚本文件?

0 投票
1 回答
47 浏览

function - 如何确定程序的数据类型?

我正在努力准备考试,我觉得讲座幻灯片让我有点困惑。

我们的一个测试问题可能是“程序名称的类型是什么”,但我很难理解这个概念。我了解什么是数据类型,但您是在回答输入的数据类型,并用箭头跟踪程序吗?

这是一个让我感到困惑的例子。他们要我找到程序 p2 的类型:

p2 的数据类型是:

不过,我不明白他们是如何得出这个结果的。是吗:

  • 元组中的第一个星代表输入 x?
  • 表示输入 y 的元组中的第二个双星列表?
  • 第三颗星代表……什么?
  • 代表 z 的数字?
  • 最后两颗星代表程序的输出?

我很感激任何建议!

0 投票
1 回答
337 浏览

haskell - 惰性求值如何实现更大的模块化?

在他的文章“为什么函数式编程很重要”中,John Hughes 认为“惰性求值可能是函数式程序员所有的模块化最强大的工具”。为此,他提供了一个这样的示例:

假设您有两个函数,“infiniteLoop”和“terminationCondition”。您可以执行以下操作:

用 Hughes 的话来说,惰性求值“允许将终止条件与循环体分开”。这绝对是正确的,因为这里使用惰性求值的“terminationCondition”意味着可以在循环之外定义这个条件——当 terminateCondition 停止请求数据时,infiniteLoop 将停止执行。

但是高阶函数不能实现如下相同的事情吗?

惰性求值如何在这里提供高阶函数不提供的模块化?

0 投票
1 回答
404 浏览

macos - 无法打开 Miranda 编程语言 tar ball Mac El Capitan

我试着:

我在正确的目录(我的下载文件夹)中,但出现此错误:

./usr/: Can't set user=0/group=0 for usrCan't update time for usr tar: Error exit 由于先前的错误而延迟。

在这种情况下,这个错误意味着什么?

0 投票
3 回答
77 浏览

haskell - 模式匹配简单类型

我是一个尝试学习函数式编程的初学者。

有没有办法匹配不同的标准(非用户定义)类型?

例如,如果函数的参数是一个元组,则添加它们,如果它只是一个 int,则使用 int:

这显然行不通,因为程序认为 any_num 只是任何元组,因此无法访问。

0 投票
2 回答
114 浏览

functional-programming - 如何阅读此功能代码

阅读(解释)此功能性 Miranda 代码时遇到问题。

我知道它的作用

  • 通过获取长度来计算列表的大小#
  • 创建一个包含上述原始输入列表长度的单元素列表
  • 使用对每个元素的操作将新列表折叠foldr成单个整数+0

但是我被括号弄糊涂了,看不到输入列表的输入位置。最右边的[]构造函数是做什么的?

另外为什么这段代码只能通过函数g工作,但如果我直接调用它会抛出错误?

0 投票
2 回答
102 浏览

functional-programming - Miranda Language - 函数 lambda

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

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

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

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

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

先感谢您。

0 投票
1 回答
32 浏览

miranda - 计算米兰达语言的平均值

我真的需要帮助找到一种计算米兰达语言平均值的方法。我似乎得到了这个错误,它无法将类型 [num] -> num 与 num 统一起来。我似乎无法将列表的总和作为一个值并进行除法?

0 投票
0 回答
10 浏览

serialization - Iseq 的规范名称来自“实现功能语言:教程”

在 Simon Peyton Jones 的“实现函数式语言:教程”中,一种用于高效字符串构建的数据结构称为Iseq,也称为iseqiseqRep。这可以通过搜索文档找到。

这个Iseq名字是什么东西的规范缩写吗?“i”前缀指的是什么?我想知道这是因为我想知道这是否被更广泛地使用,而且我在文献中的任何地方都找不到它。

我一直在其他地方寻找同名的任何东西,唯一的同名结构是 Clojure 的ISeq,这是一个非常不同的东西。我目前的两个最佳猜测是:

  • “i”是完全任意的,用作标识所有相关函数的前缀。
  • “i”可能代表“缩进序列”?这几乎是我能想到的唯一“我”。