slope lines

リストの指定位置を更新する書き方が分からずVectorを使ったらダントツでビリ。

$ gosh -E 'let1 v #(0 1 2) (set! (ref v 2) 3) (print v) (exit)'
#(0 1 3)

$ gosh -E 'let1 l `(0 1 2) (set! (ref l 2) 3) (print l) (exit)'
gosh: "error": no applicable method for #<generic |setter of ref| (5)> with arguments ((0 1 2) 2 3)

上のがアリなら下のも通ってくれてよさそうなのに。

+
arc> (= l '(0 1 2))
(0 1 2)
arc> (= (l 2) 3)
3
arc> l
(0 1 3)

スバラシイ。

++

gauche.sequence使えばよかったらしい。

gosh> (use gauche.sequence)
#<undef>
gosh> (define l '(0 1 2))
l
gosh> (set! (ref l 2) 3)
#<undef>
gosh> l
(0 1 3)

5B縮んだが依然としてビリ…。

+++

大きな見落としに気づいてビリから脱出。はずみでRuby版も縮む。