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...