次の 2 つの機能は非常によく似ています。[String] n 個の要素 ([Int] または [Float]) から読み取ります。共通コードを分解するにはどうすればよいですか? 型を引数として渡すことをサポートする Haskell のメカニズムを知りません。
readInts n stream = foldl next ([], stream) [1..n]
where
next (lst, x:xs) _ = (lst ++ [v], xs)
where
v = read x :: Int
readFloats n stream = foldl next ([], stream) [1..n]
where
next (lst, x:xs) _ = (lst ++ [v], xs)
where
v = read x :: Float
私は Haskell の初心者レベルなので、コードに関するコメントは大歓迎です。