From 31b6f1a4941fb96d8a758aa6f128df2e496a6574 Mon Sep 17 00:00:00 2001 From: Isaac Shoebottom Date: Wed, 19 Mar 2025 15:24:15 -0300 Subject: [PATCH] Change to use cond --- Labs/07.rkt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Labs/07.rkt b/Labs/07.rkt index 0fa25e7..64f0d37 100644 --- a/Labs/07.rkt +++ b/Labs/07.rkt @@ -4,8 +4,6 @@ (define-syntax-rule (test/exn expr msg) (check-exn exn:fail? (lambda () expr) msg)) -(define-type Node (Symbol -> (U (U Number Node) Zero))) - (define (msg0 [obj : Node] [selector : Symbol]) (obj selector)) (define (node [v : Number] [l : Node] [r : Node]) : Node @@ -17,12 +15,14 @@ [(sum) (+ v (+ (msg-num l 'sum) (msg-num r 'sum)))] [else (error 'node (symbol->string m))]))) -(define (mt) : Node +(define (mt) (lambda ([m : Symbol]) (case m [(sum) 0] [else (error 'mt (symbol->string m))]))) +(define-type Node (Symbol -> (U (U Number Node) Zero))) + (define (msg-num [obj : Node] [selector : Symbol]) : Number (define result (msg0 obj selector)) (cond @@ -31,9 +31,9 @@ (define (msg-node [obj : Node] [selector : Symbol]) : Node (define result (msg0 obj selector)) - (if (not (number? result)) - result - (error 'msg-node "Expected a node message"))) + (cond + [(not (number? result)) result] + [else (error 'msg-node "Expected a node message")])) (module+ test (define tree1 (node 1 (mt) (mt)))