-2

次のコードを考えると、関数を呼び出すための構文はどうなるでしょう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))
4

1 に答える 1

0

Lisp ファミリーの言語の素晴らしい点は、(比較的) 統一された構文です。またはをsquare記述して関数を呼び出すのと同じように、 を呼び出します。これは、 で 2 つの引数を取ります。コンテキストでは、これは次のようになります。(square n)*(* n1 n2 ...)dist(dist point1 point2)

(let ((point1 (make-coord …))
      (point2 …))
  (dist point1 point2))
于 2013-09-22T22:49:09.770 に答える