【问题标题】:Return a pair - syntax error返回一对 - 语法错误
【发布时间】:2023-04-03 00:35:01
【问题描述】:

我在球拍中使用plhttps://pl.barzilay.org/ 下载地址:http://pl.barzilay.org/pl.plt

( : f1 : -> (Pairof Symbol String))
(define (f1)
  (cons 'wwww "aaa"))

错误:

   Type Checker: Polymorphic function `cons' could not be applied to arguments:
Argument 1:
  Expected: a
  Given:    'wwww
Argument 2:
  Expected: (Listof a)
  Given:    String

Result type:     (Listof a)
Expected result: (Pairof Symbol String)
 in: (cons (quote wwww) "aaa")

我做错了什么,我该如何解决?

【问题讨论】:

  • pl 语言中定义的cons 的类型是什么?如果cons 的类型为(Pairof a (Listof a)),则类型检查器将不接受示例中的第二个参数“aaa”。
  • 我找不到pl 的规范,但我看到(cons 1 2 ) 也无法编译,所以我猜你是对的。由于没有文档,而且世界上只有一个人可以正式回答这个问题,我想你回答它就可以了,我们关闭这个问题。
  • 你可以问 Eli :-)
  • 哈哈...我已经给他发了邮件,所以让我们看看他是否会在邮件中回复,如果是,我会将答案转发到这里。

标签: functional-programming lisp racket


【解决方案1】:

我在课堂上使用的 #lang pl 语言是 Typed 的变体 球拍。它的变化之一是 cons 有一个更受限制的 类型(如您所见),它只允许构造正确的列表

(作为旁注,没有正式文档的原因是,这 语言旨在在课堂上使用,因此它是 这是随机的教学需要,而不是作为某事 用于随机球拍代码...所以我的课堂笔记是主要的地方 “记录”语言。)

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 2021-01-04
    • 2013-06-13
    • 2013-11-26
    • 2011-11-17
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多