選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

59 行
1.1 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
  45. (define a 1)
  46. (define b 2))))
  47. (eval expr)
  48. (assert (= a 1))
  49. (assert (= b 2))))