gencomp 確認 (8)

なんとなく昼に疲れると読解力が落ちる事が判明。ってか現実逃避の力はやはり相当凄いらしい事も判明。
あ、あと gosh で色々確認したかも。

gosh> (ref ref 'optional)
*** ERROR: object of class #<class <generic>> doesn't have such slot: optional
Stack Trace:
_______________________________________
gosh> (is-a? ref <generic>)
#t
gosh> (ref ref 'methods)
(#<method (ref <string> <integer>)> #<method (ref <vector> <integer>)> #<method (ref <list> <integer>)> #<method (ref <hash-table> <top> <top>)> #<method (ref <hash-table> <top>)> #<method (ref <top> <symbol>)>)
gosh> (ref (car (ref ref 'methods)) 'optional)
#f
gosh> (ref (car (ref ref 'methods)) 'required)
2
gosh> 

結局 arity という手続きは必須な引数の数が戻る ( なソレだとリストになって戻ってくる) 模様。

今朝方、現実トウヒしていた事をいきなり思い出した。テキストファイルを開いて書き写す。

午前 0800 のナニ

@ の中の getter-with-setter に渡される引数な case-lambda を make-dispatcher で置き換え

(getter-with-setter
  (make-dispatcher
   ((lambda (obj selector) (ref obj selector))
    (lambda (obj selector . more) (apply @ (ref obj selector) more))))
  (make-dispatcher
   ((lambda (obj selector val) ((setter ref) obj selector val))
    (lambda (obj selector selector2 . rest)
      (apply (setter ref) (ref obj selector) selector2 rest)))))

昨晩はスルーしたんですが、初めてみる面白いナニがいくつか。

  • cut とか => な cond とか # make-dispatcher の中のナニ
      (cond ((find (lambda (p) (procedure-arity-includes? p len)) closures)
             => (cut apply <> args))
    • 書いてみると find ってソレも初めて見る気がします
  • 他にもあるんですが、途中終了