我正在做一些功课,我对有关lisp的一些事情感到困惑
问题:
考虑Lisp语句:
(eval (read-from-string (read-line)))
非常简要地描述了支持这种语句所需的Lisp类型系统的功能。
思想
我是Lisp的新手,所以我不确定如何处理这个问题。 我理解类型系统基本上是它的工作方式和它能做什么的语言规则。我只是不知道如何用这一行代码描述Lisp的功能。
答案 0 :(得分:1)
由于这是一个家庭作业问题,我不会为你回答。相反,我试图帮助你问自己正确的问题。
如果您在某个问题中有一个您不了解或不了解的概念,那么您应该首先尝试理解 。
我理解类型系统基本上是它的工作方式和它可以做什么的语言规则。
退后一步,想一想 这句话是关于你对#34;类型系统"的理解。 你明白什么是类型系统吗?我不这么认为。 你了解类型系统的目的吗?我不这么认为。
因此,请先尝试回答这些问题。 (这是对维基百科的快速跳转)为了验证您的理解,请尝试回答以下问题:
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))