Я уже искал в Интернете, у меня есть Real World Haskell, но я не могу понять, как распечатать список списков целых чисел, когда этот список возвращается combinatoricsGeneration .combinations.Распечатайте список списков целых чисел с Haskell, возвращаемых CombinatoricsGeneration.combinations
Я нашел модуль в http://www.polyomino.f2s.com/david/haskell/combinatorics.html Функции не имеют подписи типа, поэтому Haskell должен все вывести. Я даже пытался добавить подписи, но ошибка все еще существует (более конкретная).
Исходный код, я использую из этого модуля:
combinationsOf 0 _ = [[]]
combinationsOf _ [] = []
combinationsOf k (x:xs) = map (x:) (combinationsOf (k-1) xs)
++ combinationsOf k xs
combinations k n = combinationsOf k [1..n]
Я добавил следующие подписи, чтобы увидеть, если это имело значение, но это не так:
combinationsOf :: Integer -> [a] -> [[a]]
combinations :: Integer -> Integer -> [[Integer]]
исходный файл My Haskell is:
module Main
where
import IO
import qualified CombinatoricsGeneration as CG
main = putStr $ unlines $ map show CG.combinations(6, 8)
Сборник CombinatoricsGeneration в порядке. Но один из моих исходного файла выдает ошибку:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ ghc -c CombinatoricsGeneration.hs
$ ghc -o test CombinatoricsGeneration.o test.hs
test.hs:6:37:
Couldn't match expected type `[a]'
against inferred type `t -> t1 -> [[t1]]'
In the second argument of `map', namely `CG.combinations'
In the second argument of `($)', namely
`map show CG.combinations (6, 8)'
In the second argument of `($)', namely
`unlines $ map show CG.combinations (6, 8)'
Однако следующая строка работает отлично:
main = putStr $ unlines $ map show [[1,2],[2],[3]]
Не могли бы вы помочь мне показать, что простой список?
TIA
Он прекрасно работает. Благодарю. – lkuty