调用一个参数应该是结构实例的函数

时间:2013-09-22 22:31:07

标签: lisp common-lisp clisp

鉴于以下代码,调用函数dist的语法是什么?

(defstruct coord 
  x 
  y)

(defstruct line 
  (point1 :type coord) 
  (point2 :type coord) )


(defun dist (point1 point2)
  (sqrt (+ (square (- (coord-x point1) (coord-x point2)))
           (square (- (coord-y point1) (coord-y point2))))))

(defun square (x) (* x x))

1 个答案:

答案 0 :(得分:0)

Lisp系列中语言的美妙之处在于(相对)统一的语法。就像您通过square编写(square n)* (* n1 n2 ...)来调用函数dist一样,您调用(dist point1 point2),其中带有两个参数,(let ((point1 (make-coord …)) (point2 …)) (dist point1 point2)) 。在上下文中,这可能是这样的:

{{1}}