types - Lisp 类型的系统故障

标签 types lisp system

我正在做一些作业,我对 lisp 的一些事情感到困惑

问题:

考虑 Lisp 语句:

(eval (read-from-string (read-line)))

非常简要地描述支持此类语句所需的 Lisp 类型系统的特性。

想法

我是 Lisp 的新手,所以我什至不确定如何处理这个问题。 我理解类型系统基本上是关于它如何工作以及它能做什么的语言规则。我只是不知道如何用这一行代码来描述 Lisp 的特性。

最佳答案

因为这是一道作业题,我就不给你解答了。相反,我会尝试帮助您问自己正确的问题。

每当问题中有一个您还不知道或不理解的概念时,您应该首先尝试理解那个

I understand type system is basically the rules of the language of how it works and what it can do.

退后一步,想想这句话讲述了您对“类型系统”的理解。 你明白什么是类型系统吗?我不这么认为。 您了解类型系统的用途吗?我不这么认为。

所以,首先尝试回答这些问题。 (快速跳转到维基百科)为了验证您的理解,请尝试回答以下问题:

  • 动态类型和静态类型有什么区别?
  • 强类型和弱类型有什么区别?
  • 如果 42 的类型为 Integer,并且某些函数 foo 接受类型为 Integer 的单个参数,并且返回一个String,表达式(foo 42)(调用函数)的类型是什么?
  • 如果 "OMG" 的类型为 String,并且某些函数 foo 接受类型为 Integer 的单个参数> 并返回一个 String,表达式 (foo "OMG") 的类型是什么?

尝试回答最后两个问题,不仅针对 Lisp,还针对其他一些语言(如 Java、C、C++、Haskell;当然要调整调用语法)。

现在,试着想一下(这里保持 Common Lisp eval)的类型:

(eval '(+ 1 2))

最后,什么是类型:

(eval (read))

关于types - Lisp 类型的系统故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36958812/

相关文章:

匿名类型的 C# 类型转换异常,为什么?

arrays - Swift 获取通用类型的数组

python 查找函数的类型

android - 是否可以更换电话应用程序或锁屏?

c# - 需要一种数据类型来在 C# 中保存 100 万以上的数字

lisp - 首先从 LISP 中的列表中排序原子,然后排序子列表

macros - 如何使用 defmacro 简化一些代码

opencv - Racket 和 OpenCV

cocoa 系统()进展?

在 C 循环中调用 system() 失败