Compound data type: Difference between revisions

Content added Content deleted
(Switched the Common Lisp and D entries to the correct order)
Line 194:
(assert (= 1 (:y p)))</lang>
 
=={{header|Common Lisp}}==
 
<lang lisp>CL-USER> (defstruct point (x 0) (y 0)) ;If not provided, x or y default to 0
POINT</lang>
In addition to defining the ''point'' data type, the defstruct macro also created constructor and accessor functions:
<lang lisp>CL-USER> (setf a (make-point)) ;The default constructor using the default values for x and y
#S(POINT :X 0 :Y 0)
CL-USER> (setf b (make-point :x 5.5 :y #C(0 1))) ;Dynamic datatypes are the default
#S(POINT :X 5.5 :Y #C(0 1)) ;y has been set to the imaginary number i (using the Common Lisp complex number data type)
CL-USER> (point-x b) ;The default name for the accessor functions is structname-slotname
5.5
CL-USER> (point-y b)
#C(0 1)
CL-USER> (setf (point-y b) 3) ;The accessor is setfable
CL-USER> (point-y b)
3</lang>
 
=={{header|D}}==
Line 211 ⟶ 228:
 
There are also other ways to initialize them. The D language also supports tuples.
 
=={{header|Common Lisp}}==
 
<lang lisp>CL-USER> (defstruct point (x 0) (y 0)) ;If not provided, x or y default to 0
POINT</lang>
In addition to defining the ''point'' data type, the defstruct macro also created constructor and accessor functions:
<lang lisp>CL-USER> (setf a (make-point)) ;The default constructor using the default values for x and y
#S(POINT :X 0 :Y 0)
CL-USER> (setf b (make-point :x 5.5 :y #C(0 1))) ;Dynamic datatypes are the default
#S(POINT :X 5.5 :Y #C(0 1)) ;y has been set to the imaginary number i (using the Common Lisp complex number data type)
CL-USER> (point-x b) ;The default name for the accessor functions is structname-slotname
5.5
CL-USER> (point-y b)
#C(0 1)
CL-USER> (setf (point-y b) 3) ;The accessor is setfable
CL-USER> (point-y b)
3</lang>
 
=={{header|E}}==