larsen / wiz

A Scheme interpreter written in Haskell
MIT License
9 stars 1 forks source link

apply failure #1

Closed larsen closed 9 years ago

larsen commented 9 years ago

Apply fails when trying to evaluate

(map 'fact '(1 2 3))

where

(define map (lambda (f lst)
    (cons (f (car lst))
          (map f (cdr lst)))))

evalExpr ( "f" ( "car" "lst" ) ) in
"f"     ->      "fact"
"fact"  ->      (λ ( "n" ) ( (if "n" ( '*' "n" ( "fact" ( '-' "n" 1 ) ) ) 1) ) )
"lst"   ->      ( 1 2 3 )
"map"   ->      (λ ( "f" "lst" ) ( ( "cons" ( "f" ( "car" "lst" ) ) ( "map" "f" ( "cdr" "lst" ) ) ) ) )                                                              
"sqr"   ->      (λ ( "n" ) ( ( '*' "n" "n" ) ) )

apply in
"f"     ->      "fact"
"fact"  ->      (λ ( "n" ) ( (if "n" ( '*' "n" ( "fact" ( '-' "n" 1 ) ) ) 1) ) )
"lst"   ->      ( 1 2 3 )
"map"   ->      (λ ( "f" "lst" ) ( ( "cons" ( "f" ( "car" "lst" ) ) ( "map" "f" ( "cdr" "lst" ) ) ) ) )                                                              
"sqr"   ->      (λ ( "n" ) ( ( '*' "n" "n" ) ) )
larsen commented 9 years ago

THIS IMPLEMENTATION OF MAP IS WRONG