(f h)
main = print $ rpn [2, 3] (+)
Errors:
source_file.hs:2:19:
Occurs check: cannot construct the infinite type: t ~ [t]
Expected type: [[t]]
Actual type: [t]
Relevant bindings include
f :: t -> t1
(bound at source_file.hs:2:11)
t :: [t]
(bound at source_file.hs:2:8)
h :: t (bound at source_file.hs:2:6)
rpn :: [[t]] -> (t -> t1) -> t -> t1
(bound at source_file.hs:1:1)
In the first argument of ‘rpn’, namely ‘t’
In the expression: rpn t (f h)
source_file.hs:2:22:
Occurs check: cannot construct the infinite type: t1 ~ t -> t1
Relevant bindings include
f :: t -> t1
(bound at source_file.hs:2:11)
t :: [t]
(bound at source_file.hs:2:8)
h :: t (bound at source_file.hs:2:6)
rpn :: [[t]] -> (t -> t1) -> t -> t1
(bound at source_file.hs:1:1)
In the second argument of ‘rpn’, namely ‘(f h)’
In the expression: rpn t (f h)
source_file.hs:4:8:
No instance for (Show (a0 -> a0 -> a0))
(maybe you haven't applied enough arguments to a function?)
arising from a use of ‘print’
In the expression: print
In the expression: print $ rpn [2, 3] (+)
In an equation for ‘main’: main = print $ rpn [2, 3] (+)
source_file.hs:4:21:
No instance for (Num [a0]) arising from the literal ‘2’
In the expression: 2
In the first argument of ‘rpn’, namely ‘[2, 3]’
In the second argument of ‘($)’, namely ‘rpn [2, 3] (+)’
source_file.hs:4:27:
No instance for (Num a0) arising from a use of ‘+’
The type variable ‘a0’ is ambiguous
Note: there are several potential instances:
instance Num Integer -- Defined in ‘GHC.Num’
instance Num Double -- Defined in ‘GHC.Float’
instance Num Float -- Defined in ‘GHC.Float’
...plus two others
In the second argument of ‘rpn’, namely ‘(+)’
In the second argument of ‘($)’, namely ‘rpn [2, 3] (+)’
In the expression: print $ rpn [2, 3] (+)
It looks like you posted long piece of code, consider editing it out and putting it on hastebin.com and pasting link to it instead. Alternatively, send your code in a file.
what have I done
I suppose [] is the argument list?
And t is the tails function?
Oh.. Your Base case is wrong.. If I can guess the haskell syntax, rpn [] f = [] rpn [h:t] f = (rpn t f) h f
Обсуждают сегодня