2017年4月1日土曜日

開発環境

Think Perl 6: How to Think Like a Computer Scientist (Laurent Rosenfeld(著)、Allen B. Downey(著)、Oreilly & Associates Inc)のPart 1(Starting with the basics)、Chapter 5(Fruitful subroutines)の Boolean functions の Exercise.を Scheme で取り組んでみる。

Boolean functions の Exercise.

コード(Emacs)

(begin
  (load "./lib/stdlib/base.scm")
  (define (is-between x y z) (<= x y z))
  (define (range start end)
    (define (iter i result)
      (if (= i end)
          (reverse result)
          (iter (+ i 1) (cons i result))))
    (iter start '()))
  (define nums (range 1 6))  
  (for-each (lambda (x)
              (for-each (lambda (y)
                          (for-each (lambda (z)
                                      (display x)
                                      (display " <= ")
                                      (display y)
                                      (display " <= ")
                                      (display z)
                                      (display ": ")
                                      (display (is-between x y z))
                                      (newline))
                                    nums))
                        nums))
            nums)
  'done
  )

入出力結果(Terminal, REPL)

$ ./ksi < temp.scm
> 1 <= 1 <= 1: #true
1 <= 1 <= 2: #true
1 <= 1 <= 3: #true
1 <= 1 <= 4: #true
1 <= 1 <= 5: #true
1 <= 2 <= 1: #false
1 <= 2 <= 2: #true
1 <= 2 <= 3: #true
1 <= 2 <= 4: #true
1 <= 2 <= 5: #true
1 <= 3 <= 1: #false
1 <= 3 <= 2: #false
1 <= 3 <= 3: #true
1 <= 3 <= 4: #true
1 <= 3 <= 5: #true
1 <= 4 <= 1: #false
1 <= 4 <= 2: #false
1 <= 4 <= 3: #false
1 <= 4 <= 4: #true
1 <= 4 <= 5: #true
1 <= 5 <= 1: #false
1 <= 5 <= 2: #false
1 <= 5 <= 3: #false
1 <= 5 <= 4: #false
1 <= 5 <= 5: #true
2 <= 1 <= 1: #false
2 <= 1 <= 2: #false
2 <= 1 <= 3: #false
2 <= 1 <= 4: #false
2 <= 1 <= 5: #false
2 <= 2 <= 1: #false
2 <= 2 <= 2: #true
2 <= 2 <= 3: #true
2 <= 2 <= 4: #true
2 <= 2 <= 5: #true
2 <= 3 <= 1: #false
2 <= 3 <= 2: #false
2 <= 3 <= 3: #true
2 <= 3 <= 4: #true
2 <= 3 <= 5: #true
2 <= 4 <= 1: #false
2 <= 4 <= 2: #false
2 <= 4 <= 3: #false
2 <= 4 <= 4: #true
2 <= 4 <= 5: #true
2 <= 5 <= 1: #false
2 <= 5 <= 2: #false
2 <= 5 <= 3: #false
2 <= 5 <= 4: #false
2 <= 5 <= 5: #true
3 <= 1 <= 1: #false
3 <= 1 <= 2: #false
3 <= 1 <= 3: #false
3 <= 1 <= 4: #false
3 <= 1 <= 5: #false
3 <= 2 <= 1: #false
3 <= 2 <= 2: #false
3 <= 2 <= 3: #false
3 <= 2 <= 4: #false
3 <= 2 <= 5: #false
3 <= 3 <= 1: #false
3 <= 3 <= 2: #false
3 <= 3 <= 3: #true
3 <= 3 <= 4: #true
3 <= 3 <= 5: #true
3 <= 4 <= 1: #false
3 <= 4 <= 2: #false
3 <= 4 <= 3: #false
3 <= 4 <= 4: #true
3 <= 4 <= 5: #true
3 <= 5 <= 1: #false
3 <= 5 <= 2: #false
3 <= 5 <= 3: #false
3 <= 5 <= 4: #false
3 <= 5 <= 5: #true
4 <= 1 <= 1: #false
4 <= 1 <= 2: #false
4 <= 1 <= 3: #false
4 <= 1 <= 4: #false
4 <= 1 <= 5: #false
4 <= 2 <= 1: #false
4 <= 2 <= 2: #false
4 <= 2 <= 3: #false
4 <= 2 <= 4: #false
4 <= 2 <= 5: #false
4 <= 3 <= 1: #false
4 <= 3 <= 2: #false
4 <= 3 <= 3: #false
4 <= 3 <= 4: #false
4 <= 3 <= 5: #false
4 <= 4 <= 1: #false
4 <= 4 <= 2: #false
4 <= 4 <= 3: #false
4 <= 4 <= 4: #true
4 <= 4 <= 5: #true
4 <= 5 <= 1: #false
4 <= 5 <= 2: #false
4 <= 5 <= 3: #false
4 <= 5 <= 4: #false
4 <= 5 <= 5: #true
5 <= 1 <= 1: #false
5 <= 1 <= 2: #false
5 <= 1 <= 3: #false
5 <= 1 <= 4: #false
5 <= 1 <= 5: #false
5 <= 2 <= 1: #false
5 <= 2 <= 2: #false
5 <= 2 <= 3: #false
5 <= 2 <= 4: #false
5 <= 2 <= 5: #false
5 <= 3 <= 1: #false
5 <= 3 <= 2: #false
5 <= 3 <= 3: #false
5 <= 3 <= 4: #false
5 <= 3 <= 5: #false
5 <= 4 <= 1: #false
5 <= 4 <= 2: #false
5 <= 4 <= 3: #false
5 <= 4 <= 4: #false
5 <= 4 <= 5: #false
5 <= 5 <= 1: #false
5 <= 5 <= 2: #false
5 <= 5 <= 3: #false
5 <= 5 <= 4: #false
5 <= 5 <= 5: #true
=> done
> $

0 コメント:

コメントを投稿