ML: haskell-jp / quickml.com
新メンバー: ttoyofukujp / yahoo.co.jp

   豊福です。

   リストの最後の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 を少し変更すれば素直っぽく
それでいてためこまないように書けるのでしょうか。
---
                         豊福
                         ttoyofukujp / yahoo.co.jp


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/

このMLを退会する方法:
- 本文が空のメールを <haskell-jp / quickml.com> に送ってください
- 本文が空のメールを送れない場合は、
  本文に「退会」とだけ書いたメールを <haskell-jp / quickml.com> に送ってください
  (署名やhotmailの広告などがついて空メールを送れない場合など)

<haskell-jp / quickml.com> のメンバー:
nobsun / s...
shiro / l...
kanaya / s...
takana / b...
hiroyuki / k...
kawaji / h...
shelarcy / c...
sakai / t...
nnakamur / m...
tahara / t...
akira / a...
ogino / g...
tetryl / t...
ko1 / n...
felio / k...
akr / m...
aamine / l...
zn / m...
tar_zcvf / y...
ttoyofukujp / y...
ttoyofukujp / y...