From 5be8bba895f118cf047a36c747f1f3e8d955e5c9 Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Wed, 7 Jan 2026 12:54:27 -0500 Subject: [PATCH] More work on barf. --- 08-barf/main.rkt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/08-barf/main.rkt b/08-barf/main.rkt index 3c5902f..d66b708 100644 --- a/08-barf/main.rkt +++ b/08-barf/main.rkt @@ -264,6 +264,14 @@ CFG for the BARF language: [(Lambda par body) (eval-lambda arg par body)] [_ (error 'eval-call "Expected lambda expression to call, instead got: ~s." f)])])) +(: findfun : Symbol PROGRAM -> FUN) +; Finds the Fun. +(define (findfun fname prog) + (define foundfun (cases prog [(Prog flist) + (ormap (lambda (f) (cases f [(Fun name param body) + (if (string=? name fname) (f) (#f))])))])) + (if (not foundfun) (error 'findfun "Function not found.") foundfun)) + (: eval : BARF -> Primitive) ;; evaluates BARF expressions by reducing them to numbers (define (eval expr)