【问题标题】:How do I determine the data type for a program?如何确定程序的数据类型?
【发布时间】:2016-11-11 11:06:04
【问题描述】:

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

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

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

p2 x y z = x y!z

p2的数据类型是:

(*->[**])->*->num->**

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

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

感谢任何建议!

【问题讨论】:

    标签: function types functional-programming miranda


    【解决方案1】:

    * -> [**]x的类型,*y的类型,numz的类型,**是结果的类型。

    foo -> bar 是接受foo 并返回bar 的函数类型,[baz]bazs 的列表。 ***(以及任何其他数量的 *s)代表任意类型(有限制,如果相同数量的 *s 在一个类型中出现多次,它代表相同的类型每次。

    所以x 是一个函数,它接受任意类型的值并生成另一个任意类型的列表; yx 的参数类型的值; znum 类型的值;结果是x的结果类型的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 2016-05-13
      • 2015-09-19
      • 2018-11-30
      • 2013-12-10
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多