Advertisement
Guest User

Untitled

a guest
May 8th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 8.42 KB | None | 0 0
  1. ;; przykład
  2.  
  3. (define fact-in-expr
  4.   (letrec-expr 'fact (lambda-expr 'n
  5.                                   (if-expr (op '= (const 0) (variable 'n))
  6.                                            (const 1)
  7.                                            (op '* (variable 'n)
  8.                                                (app-expr (variable 'fact)
  9.                                                          (op '- (variable 'n)
  10.                                                              (const 1))))))
  11.                (app-expr (variable 'fact)
  12.                          (const 5))))
  13.  
  14. (define map-in-expr
  15.   (letrec-expr 'map (lambda-expr 'xs
  16.                                  (if-expr (null?-expr (cdr-expr (variable 'xs)))
  17.                                           (null-expr)
  18.                                           (cons-expr (app-expr (car-expr (variable 'xs)) (car-expr (cdr-expr (variable 'xs))))
  19.                                                      (app-expr (variable 'map)
  20.                                                                (cons-expr (car-expr (variable 'xs))
  21.                                                                           (cdr-expr (cdr-expr (variable 'xs))))))))
  22.  
  23.  
  24.  
  25.  
  26.  
  27.                
  28.                (app-expr (variable 'map)
  29.  
  30.                          (cons-expr (letrec-expr 'fact (lambda-expr 'n
  31.                                                                     (if-expr (op '= (const 0) (variable 'n))
  32.                                                                              (const 1)
  33.                                                                              (op '* (variable 'n)
  34.                                                                                  (app-expr (variable 'fact)
  35.                                                                                            (op '- (variable 'n)
  36.                                                                                                (const 1))))))
  37.                                                  (variable 'fact))
  38.                                     (cons-expr (const 3)
  39.                                                (cons-expr (const 5)
  40.                                                           (cons-expr (const 7)
  41.                                                                      (null-expr))))))))
  42.  
  43.  
  44. (define append-in-expr
  45.   (letrec-expr 'append (lambda-expr 'xs
  46.                                     (if-expr (null?-expr (car-expr (variable 'xs)))
  47.                                              (cdr-expr (variable 'xs))
  48.                                              (cons-expr (car-expr (car-expr (variable 'xs)))
  49.                                                         (app-expr (variable 'append)
  50.                                                                   (cons-expr (cdr-expr (car-expr (variable 'xs)))
  51.                                                                              (cdr-expr (variable 'xs)))))))
  52.  
  53.  
  54.  
  55.  
  56.  
  57.                
  58.                (app-expr (variable 'append) (cons-expr (letrec-expr 'map (lambda-expr 'xs
  59.                                                                                       (if-expr (null?-expr (cdr-expr (variable 'xs)))
  60.                                                                                                (null-expr)
  61.                                                                                                (cons-expr (app-expr (car-expr (variable 'xs)) (car-expr (cdr-expr (variable 'xs))))
  62.                                                                                                           (app-expr (variable 'map)
  63.                                                                                                                     (cons-expr (car-expr (variable 'xs))
  64.                                                                                                                                (cdr-expr (cdr-expr (variable 'xs))))))))
  65.                                                                     (app-expr (variable 'map)
  66.  
  67.                                                                               (cons-expr (letrec-expr 'fact (lambda-expr 'n
  68.                                                                                                                          (if-expr (op '= (const 0) (variable 'n))
  69.                                                                                                                                   (const 1)
  70.                                                                                                                                   (op '* (variable 'n)
  71.                                                                                                                                       (app-expr (variable 'fact)
  72.                                                                                                                                                 (op '- (variable 'n)
  73.                                                                                                                                                     (const 1))))))
  74.                                                                                                       (variable 'fact))
  75.                                                                                          (cons-expr (const 3)
  76.                                                                                                     (cons-expr (const 5)
  77.                                                                                                                (cons-expr (const 7)
  78.                                                                                                                           (null-expr)))))))
  79.                                                        (letrec-expr 'map (lambda-expr 'xs
  80.                                                                                       (if-expr (null?-expr (cdr-expr (variable 'xs)))
  81.                                                                                                (null-expr)
  82.                                                                                                (cons-expr (app-expr (car-expr (variable 'xs)) (car-expr (cdr-expr (variable 'xs))))
  83.                                                                                                           (app-expr (variable 'map)
  84.                                                                                                                     (cons-expr (car-expr (variable 'xs))
  85.                                                                                                                                (cdr-expr (cdr-expr (variable 'xs))))))))
  86.                                                                     (app-expr (variable 'map)
  87.  
  88.                                                                               (cons-expr (letrec-expr 'fact (lambda-expr 'n
  89.                                                                                                                          (if-expr (op '= (const 0) (variable 'n))
  90.                                                                                                                                   (const 1)
  91.                                                                                                                                   (op '* (variable 'n)
  92.                                                                                                                                       (app-expr (variable 'fact)
  93.                                                                                                                                                 (op '- (variable 'n)
  94.                                                                                                                                                     (const 1))))))
  95.                                                                                                       (variable 'fact))
  96.                                                                                          (cons-expr (const 3)
  97.                                                                                                     (cons-expr (const 5)
  98.                                                                                                                (cons-expr (const 7)
  99.                                                                                                                           (null-expr)))))))))))
  100.  
  101.  
  102. (run map-in-expr (env-empty))
  103. (run append-in-expr (env-empty))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement