Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

59 linhas
1.2 KiB

  1. ;;
  2. ;; let testing
  3. ;;
  4. ;; (assert (not (bound? var1)))
  5. ;; (assert (not (bound? var2)))
  6. ;; (assert (not (bound? var3)))
  7. ;; (let ((var1 1)
  8. ;; (var2 [1 2 3])
  9. ;; (var3 {1 2 3 4}))
  10. ;; (assert (bound? var1))
  11. ;; (assert (bound? var2))
  12. ;; (assert (bound? var3))
  13. ;; (assert (= var1 1))
  14. ;; (assert (= var2 [1 2 3]))
  15. ;; (assert (= var3 {1 2 3 4})))
  16. ;; (assert (not (bound? var1)))
  17. ;; (assert (not (bound? var2)))
  18. ;; (assert (not (bound? var3)))
  19. ;; (assert (= (let ((val 'sym))
  20. ;; val)
  21. ;; 'sym))
  22. ;; (assert (= (let ()
  23. ;; 'sym)
  24. ;; 'sym))
  25. ;; ;;
  26. ;; ;; Quasiquote testing
  27. ;; ;;
  28. ;; (assert (= '() `()))
  29. ;; (assert (= '(1 1 2)
  30. ;; `(1 1 2)))
  31. ;; (assert (= '(1 1 2)
  32. ;; `(1 ,1 2)))
  33. ;; (assert (= '(1 1 2)
  34. ;; `(1 ,(- 10 9) 2)))
  35. ;; (assert (= '(1 1 2)
  36. ;; `(1 ,@(list 1 2))))
  37. ;; (let ((body '(2 3)))
  38. ;; (assert (= '(1 2 3)
  39. ;; `(1 ,@body))))
  40. (let ((body '((define a 1)
  41. (define b 2)))
  42. (imports '()))
  43. (let ((expr `(begin ,@(map (lambda (x) `(import ,x)) imports) ,@body)))
  44. (assert (= '(begin (define a 1) (define b 2)) expr))
  45. (eval expr)
  46. (assert (= a 1))
  47. (assert (= b 2))
  48. ))