nobsun です。 > 豊福です。 > > 早川さん > > tailn n xs | length xs <= n = xs > > | otherwise = tailn n (tail xs) > > xs が確定していなくても「length xs <= n」をある程度計算 > できるんでしたっけ。 いえ、improving value のような仕組を明示的に定義しないとできません。 ivLength :: [a] -> [Int] ivLength = iter 0 where iter n [] = [] iter n (_:ls) = n:iter (n+1) ls tailn n xs | elem (n+1) (ivLength xs) = tailn n (tail xs) | otherwise = xs かしらん。 -- Nobuo Yamashita mailto:nobsun / sampou.org I love programming. http://www.sampou.org/ I love pencil puzzles. http://www.puzzle.jp/ -- ML: haskell-jp / quickml.com 使い方: http://QuickML.com/