[Haskell-beginners] Error Message when trying to solve alphametic(SEND + MORE = MONEY)

Matthew Moppett matthewmoppett at gmail.com
Sun Jan 26 12:31:19 UTC 2014


Sorry about the last post -- I accidentally clicked "send" before I'd
written my message.

Sok Ha:

expr    = show send ++ "+" ++ show more ++ "=" show money


should read

expr    = show send ++ "+" ++ show more ++ "=" ++ show money

The error message is rather cryptic -- ghc seems to assume that "=" must be
intended as a function, since it it has other values (potential arguments)
to the right of it. I usually don't spend much time trying to figure out
ghc error messages unless I really can't solve the problem by just looking
over the offending line carefully. Very often it's just a typo (as it seems
to be in your case).


On Sun, Jan 26, 2014 at 7:24 PM, Matthew Moppett
<matthewmoppett at gmail.com>wrote:

> Hi Sok Ha.
>
> expr    = show send ++ "+" ++ show more ++ "=" show money
>
>
>
> On Sun, Jan 26, 2014 at 7:16 PM, Sok Ha Chang <shaegis at gmail.com> wrote:
> > Hi.
> > I’m new to Haskell.
> > Use Haskell Platform on MacBook Air.
> > $ ghc --version
> > The Glorious Glasgow Haskell Compilation System, version 7.6.3
> >
> > I’m try to solve alphametic.
> > SEND + MORE = MONEY
> >
> > Here is code…
> >
> ----------------------------------------------------------------------------------------------------------
> > import Data.List
> >
> > decryp :: [Int] -> String -> String
> > decryp (s:e:n:d:o:r:y:[]) a =
> >         if send + more == money then expr:a else a
> >         where
> >                 send    = s * 1000 + e * 100 + n * 10 + d
> >                 more    = 1000 + o * 100 + r * 10 + e
> >                 money   = 10000 + o * 1000 + n * 100 + e * 10 + y
> >                 expr    = show send ++ "+" ++ show more ++ "=" show money
> >
> > decrypSolver :: [String]
> > decrypSolver =
> >         foldr decryp [] (permutations 7 [0, 2, 3, 4, 5, 6, 7, 8, 9])
> >
> ----------------------------------------------------------------------------------------------------------
> >
> > Error Messages is
> > ./decrypSolver.hs: line 10, column 60:
> >   Couldn't match expected type `(a0 -> String) -> Int -> [Char]'
> >               with actual type `[Char]'
> >   The function `"="' is applied to two arguments,
> >   but its type `[Char]' has none
> >   In the second argument of `(++)', namely `"=" show money'
> >   In the second argument of `(++)', namely
> >     `show more ++ "=" show money’
> >
> ----------------------------------------------------------------------------------------------------------
> >
> > How can I fix this?
> >
> > Thank you.
> >
> > Sincerely, S. Chang
> > _______________________________________________
> > Beginners mailing list
> > Beginners at haskell.org
> > http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140126/44ceec39/attachment.html>


More information about the Beginners mailing list