cnter
- это действие ввода-вывода, которое возвращает Int. То есть cnter
имеет тип IO Int
. Вы пытаетесь использовать его как Int
. Что вы действительно хотите - это выполнить действие, получив Int
, а затем использовать этот результат:
import Data.Unique
import Data.List as L
cnter = do
u <- newUnique
return (hashUnique u)
main = cnter >>= \c -> print [c]
Или с пометкой do:
main = do c <- cnter
print [c]
Но я не уверен, почему вы хотите составить список просто для его печати, я бы просто print c
лично:
main = cnter >>= print