blog/content/post/2008/09/23/2008-09-23-00001032.md

7.2 KiB
Raw Blame History

title author date wordtwit_post_info categories
『プログラミングGauche』自分でmaxを定義してみるアイディアを練ってみる kazu634 2008-09-23
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4293;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
gauche
Lisp

12章に入る。ここまでで再帰的な考えや高階関数は理解できたように思う。でも、まだまだ再帰的に考えられていないような気がする。

とりあえず数値とかの項目で、max, minなどが取り扱われていたので、それを自分で定義してみようと考えている。現在の素朴な発想は

(define (my_max . args)
(cond [(argsの要素数が0のとき) #f]
[(argsの要素数が1のとき) (car args)]
[(argsの要素数が2のとき) (if (< (car args) (cadr args))
(cadr args)
(cadr args))]
[(argsの要素数が3のとき) (if (< (car args) (cadr args))
(my_max (cadr args) (cddr args))
(my_max (cadr args) (cddr args))))])

caar, cddrとかこんがらがってるけど、こんな感じなのかな要素数を調べる手続きもあったんだっけたしけlengthだったような。こいつも考えてみよう。

プログラミングGauche

プログラミングGauche