【问题标题】:I need function definitions that have the following OCaml types我需要具有以下 OCaml 类型的函数定义
【发布时间】:2019-04-01 05:20:18
【问题描述】:

我正在研究 ocaml,但我无法弄清楚这些类型的函数。谢谢。

1- string option list -> int -> string * string list

2- ('a -> 'a -> 'b) -> 'a -> ('a -> 'b) * 'b

3- 'a list -> 'b list -> ('a -> 'b -> 'a * 'b list)

【问题讨论】:

  • 您需要付出一些努力,我们不只是为您完成作业。你能告诉我们你尝试了什么,和/或你的推理是什么,并指出你在解决它时遇到的一些具体问题吗?另请参阅 How to Askan open letter to students with homework problems
  • 另外,函数的类型签名并不是函数应该做什么的表达。这里的预期是完全不清楚的。
  • @Richard-Degenne 不需要具体的函数,得到这些类型就足够了。
  • @glennsl 是的,你是对的,但我是新手。如果我想在这里只是为了获得硬件结果,对此感到抱歉。我花了一些时间来解决这个问题,我认为这是浪费时间。因为正如 Richard-Degenne 所说,没有关于函数的信息。如果问题是“编写 bla bla 函数并获取这些类型”,我想我可以做到,但现在我无法弄清楚。如果您给我提示“如果您执行此功能,也许您可​​以获得这种类型”,这对我来说就足够了。谢谢。
  • 你看公开信了吗?我不知道你的老师打算让你从中学到什么,但他们这样做不太可能只是为了浪费你的时间。在没有上下文的情况下,从表面上看,我想说这可能应该教您阅读类型,并且鉴于您之前所学的知识,想出与这些类型匹配的实现应该是相当简单的。实现的细节可能并不重要,它只需要使用上面的类型签名传递编译器。你能用你自己的话向我解释一下这些类型的含义吗?

标签: types ocaml function-definition


【解决方案1】:

这个问题不清楚这些函数实际上应该做什么。

但是,为了让您走上正确的道路,您可以查看type annotations。它们允许您向函数参数添加显式类型。

例如可能看起来像:

let my_function (a : string option list) (b : int) : string * string list = ("", []);;

我只是不明白这样的练习有什么用。

【讨论】:

  • 我假设有一个额外的条件,你应该使用参数来产生返回值。或者如果没有,无论如何你都必须为秒的情况这样做。我认为这个练习对于教授如何阅读和理解类型很有用。如果练习包括对实现的描述,那么重点将是根据描述实现它,而不是类型。
  • 另外,练习的第一个任务通常是相对琐碎的,“设置舞台”并提示您需要遵循的模式来解决其余部分。应该比较明显,容易完成,而这里的2和3包含了类型变量和高阶函数,需要深入的理解。
  • 正如我所说,这个问题完全不清楚。我的回答是基于问题中实际提到的。如果 OP 想添加更多上下文,我很乐意相应地编辑我的答案。
猜你喜欢
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多