#gosh> (use srfi-13)
#<undef>
gosh> (string-reverse "->sdfgsrsdfgsrgsresdgd>-" )
"->dgdsersgrsgfdsrsgfds>-"
gosh> (string-reverse "->s>-" )
"->s>-"
gosh> (string-reverse "->s>-a" )
"a->s>-"
gosh> (string-reverse "b->s>-a" )
"a->s>-b"
gosh> (string-reverse "b->s-a" )
"a-s>-b"
gosh> (string-reverse "b-s-a" )
"a-s-b"
gosh> (string-reverse "b->-a" )
"a->-b"
#->-のような文字列が反転してくれないんですが、これは何かの仕様でしょうか?(仕様でしたらすみません。
#$ gosh -V
Gauche scheme shell, version 0.9.5_pre1 [utf-8,pthreads], i686-pc-linux-gnu
#HEADでなかったので、いまビルドしています。すみません。
#反転してませんか? "->-" を反転するとやっぱり "->-" だし、 "->" を反転すると ">-" ですよ。
#あ、そうか。すみません。たしかにそうです。真剣に勘違いしていました。
#私も一瞬、「あれ、何でだ?」と思って自分でREPLに入れるまで気づきませんでした。-> と <- を交換してくれる関数、というのも使いどころはありそうですが、かなりドメイン固有の操作になりそうですね。
#これは、text.trでやる処理なんですね。こういう思い込みは言語化していないと気づかないものです。(汗
#(use srfi-13)
(use text.tr)
(define-macro (defg op)
(let1 rev ($ string->symbol
$ string-tr ($ string-reverse $ symbol->string op) "<>" "><")
`(begin
(define (,op x y t)
(list ,(make-keyword op) x y t))
(define (,rev x y t)
(list ,(make-keyword op) y x t))
) ) )
#gosh> (defg =->)
<-=
gosh> (<-= 1 2 3)
(:=-> 2 1 3)
gosh> (=-> 1 2 3)
(:=-> 1 2 3)
#こういう文脈でした。グラフのデータ入力用のマクロ(恥のかきついでです。