[Gauche-devel-jp] はじめまして

Back to archive index

暇人13世 himaj****@gmail*****
2012年 7月 8日 (日) 13:56:07 JST


>> はじめまして、今さっきMLに入ったr.k.sourceです。名前が被ってないといいのだけど。
>>
>> さて、今さっきmzschemeからgaucheに乗り換える作業をしていた所、バグのような物を発見しましたので、どなたか確認お願いします。
>> あるいは、勉強不足で申し訳ないのですが、これはGaucheの拡張によるものだったのでしょうか?
>
>大和と申します。
>私も勉強中です。
>
>>
>> 手順:
>> 識別子のトークンとして、単体でコロン(:)を用いる
>
>Gaucheのキーワード拡張によるものだと思います。:ではじまるトークンをリーダーが
>キーワードとみなします。`|'で:を囲むと、リーダーにシンボルであると伝えることが
>できます。
>
>gosh> (class-of 'a)
>(class-of 'a)
>#<class <symbol>>
>gosh> (class-of ':)
>(class-of ':)
>#<class <keyword>>
>gosh> (class-of '|:|)
>(class-of '|:|)
>#<class <symbol>>
>gosh> (define |:| (lambda (x) x))
>(define |:| (lambda (x) x))
>|:|
>gosh> (|:| 3)
>(|:| 3)
>3
>gosh> (write '|:|)
>(write '|:|)
>|:|#<undef>
>gosh> (display '|:|)
>(display '|:|)
>:#<undef>
>gosh>
>
>
>大和
>
>> 予期される結果:
>> r5rs p.38 7.1.1 Lexical structureより、
>> : → <special initial> → <initial> → <identifier> → <token>
>> と還元され、変数名として問題なく認識される
>>
>> 実際に起った結果:
>> 次のエラーが表示される;(2行目以降省略)
>> Compile Error: variable required, but got: :
>>
>> 再現するコード:
>> (define-syntax :
>>   (syntax-rules (-> unquote)
>>     ((_ x -> y) (list (cons x y)))
>>     ((_ x -> y (unquote e) f ...) (append (: x -> y) (: e f ...)))))
>>
>> また、次のもっと短いコード:
>> (define : (lambda (x) x))
>>
>> では、次のような結果が得られる:
>> Compile Error: syntax-error: (define : (lambda (x) x))
>>
>> 環境:
>> OS: Windows 7 Ultimate (amd64)
>> CPU: Core i7 920
>> MEM: 24GB (4GB x 6, DDR3)
>> TERM: cmd.exe
>> Softwares: Gauche(0.9.3.3/[utf-8,wthreads]/i686-pc-mingw32),
>> IE(9.0.8122.16421), avast! antivirus (7.0.1426)

ありがとうございました。:%s/:/|:|/gして解決することが出来ました。

r.k.source




Gauche-devel-jp メーリングリストの案内
Back to archive index