こんにちは。早川です。
-- curry については、ありがとうございました。
-- 見た目はホント Haskell そっくりな言語なんですね〜
差分リストについはコメントできないのですが (^^;
まずは自分も1つ tailn 関数を考えてみました。
tailn n xs | length xs <= n = xs
| otherwise = tailn n (tail xs)
これで動いてるようですが、効率の方は分かりません..
ずばり "最後のn個の要素" のような型は定義できないのですかね。
On Wed, 19 Mar 2003 20:36:04 +0900
TOYOFUKU Chikanobu <ttoyofukujp / yahoo.co.jp> wrote:
> 豊福です。
>
> リストの最後のn個の要素を返す関数 tailn を素直に書けば
> tailn n = reverse.(take n).reverse
> だと思うのですがこれは遅延評価であっても一度全リストをため
> こんでしまうんですよね。ためこまない tailn を次のように
> 書いてみたのですが
>
> _tailn :: Int -> [a] -> [a] -> [a]
> _tailn n hs [] = hs
> _tailn 0 (_:hs) (_:ts) = _tailn 0 hs ts
> _tailn n hs (t:ts) = _tailn (n-1) hs ts
>
> tailn :: Int -> [a] -> [a]
> tailn n xs = _tailn n xs xs
>
> 問題ないでしょうか。差分リストのつもりで書いたのですが
> 「haskell 差分リスト」で検索してもどこのページも引っ掛から
> ないので不安です。
> もしかして reverse と take を少し変更すれば素直っぽく
> それでいてためこまないように書けるのでしょうか。
--
SH
tetryl / tokyoprogrammer.com
--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/