From dda8b325b562d957250c05a26a702f4536d5601e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 2 Aug 2022 20:19:42 +0200 Subject: Add handling of graphical chars. --- v3.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 v3.scm (limited to 'v3.scm') diff --git a/v3.scm b/v3.scm new file mode 100644 index 0000000..b2bc523 --- /dev/null +++ b/v3.scm @@ -0,0 +1,41 @@ +(define-module (v3) + :use-module (oop goops) + :re-export (+ - * abs) + :export (v3)) + +(define-class () + (x getter: x init-keyword: x:) + (y getter: y init-keyword: y:) + (z getter: z init-keyword: z:)) + +(define (v3 x y z) + (make x: x y: y z: z)) + +(define-generic +) +(define-generic -) +(define-generic *) +(define-generic abs) + +(define-method (+ (v ) (u )) + (v3 (+ (x v) (x u)) + (+ (y v) (y u)) + (+ (z v) (z u)))) + +(define-method (- (v )) + (v3 (- (x v)) + (- (y v)) + (- (z v)))) + +(define-method (- (v ) (u )) + (+ v (- u))) + +(define-method (* (v ) (u )) + (+ (* (x v) (x u)) + (* (y v) (y u)) + (* (z v) (z u)))) + +(define-method (abs (v )) + (sqrt (* v v))) + +(define-method (write (v ) port) + (write `(v3 ,(x v) ,(y v) ,(z v)) port )) -- cgit v1.2.3