・ソース
module Collatz08 where

import Control.Monad.Fix

col :: Integer -> Integer
col 1 = 1
col x = if odd x then 3*x+1 else x `div` 2
af :: [Integer] -> [Integer]
af xs = concat $ map af' xs
af' :: Integer -> [Integer]
af' x = (\z -> z ++ [1])
$ takeWhile (1/=)
-- x*100を任意の関数にする
$ takeWhile (\y -> if x*100 > y then True else error "over!")
$ iterate col x

-- この関数が定義できない
h :: ([Integer] -> [Integer]) -> [Integer] -> Bool
h _ _ = False

m :: [Integer] -> [Integer]
m xs = if h m xs then [1..] else [1]