先週、仲間内で初心者向けRuby on Rails講座ってのを開く手伝いをしました。講座自体はさておき、懇親会のときに講師の人が、「Lispを勉強して、遅延評価で無限リストとかやってみたい」というようなこと(それだけじゃないけど)を言っていました。そこで、基本というか、教科書まんまな説明をしてみます。ほとんど、特定1人対象の内容です 以下の例はScheme(Gauche)によります。 リストのn番めの要素を取り出す手続き まず、回り道ですが、リストのn番めの要素を取り出す手続きnthを定義してみます。FizzBuzz問題が1オリジンなので、ここではnthを1オリジンで定義してみます。Schemeの説明を省略すると、超単純なコードは以下のような感じかなと思います。 (define (nth lst n) (if (= n 1) (car lst) (nth (cdr lst) (- n 1)