`[]`という括弧の役割とその挙動がよくわからない

投稿者: Anonymous

普段、Lisp処理系としてRacketを利用することが多く、見よう見まねでスクリプトを書いています。その中で、Racketでは[]という括弧を利用することが多々あります。具体的にはletcondの中で使われますが、この括弧の挙動が漠然としていて、自分の中でモヤモヤしてしまいます。

具体的なコードを挙げると、下のようになります:

#lang racket
(define (plus-one x)
   (let ([plus-one-x (+ x 1)]) plus-one-x))

(define (fizzbuzz x)
   (cond [(= (modulo x 15) 0) "FizzBuzz"]
         [(= (modulo x 3) 0) "Fizz"]
         [(= (modulo x 5) 0) "Buzz"]
         [else x]))

具体的にDocumentも読んでみたのですが、自分の読解力だと、どのような挙動をするものなのか、いまいちピンと来ません。

この[]の挙動について、具体的にどのような役割と、挙動をするものなのでしょうか?

解決

SchemeのR6RSでは、()と[]は同様に利用できるため、まとまりを強調したりするのに使えます。

使い分けについて:
* Use of square brackets: http://www.r6rs.org/final/html/r6rs-app/r6rs-app-Z-H-5.html#node_chap_C
* Gauche ユーザーリファレンス: http://practical-scheme.net/gauche/man/gauche-refj_22.html

Racketは、R6RSをベースにしたScheme方言という形で枝分かれしましたが、独自拡張で、{}も使えるのだと思います。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *