<div dir="ltr"><div><div><div><div>As Alex mentioned, isValid returns Bool, while type for putStrLn is `String -> IO ()`. So, in order to print something of type Bool, you need to first convert it to String. For example, via a function `show`:<br><br></div>putStrLn (show True)<br><br></div>As Alex mentioned, there's a `print` function, which does exactly this:<br><br></div>print x = putStrLn (show x)<br><br></div>You can use it.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 23, 2015 at 7:19 PM, Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>And when Im trying this: <br><span class="">
<br>
{-# OPTIONS_GHC -Wall #-}<br>
<br>
module LogAnalysis where<br>
<br>
import Log;<br>
import Data.Char (isLetter, isDigit)<br>
<br></span>
isValid :: String -> Bool<span class=""><br>
isValid s = go (words s)<br>
where<br>
go ([a]:b:_) = isLetter a && all isDigit b<br>
go _ = False<br>
<br>
<br></span><span class="">
-- | The main entry point.<br>
main :: IO ()<br>
main = do<br></span>
putStrLn $ isValid "I 4764 He trusts to you to set them free,"<span class=""><br>
<br>
<br>
I see this error message : <br>
<br>
</span><div>src/LogAnalysis.hs@19:16-19:67 </div>
<div><span>Couldn't match type </span>
<div style="font-size:14px"><span>Bool</span></div>
<span> with </span>
<div style="font-size:14px">[<span>Char</span>]</div>
<span>
Expected type: String Actual type: Bool</span><span title="Click to show/hide extra information"> …</span><span style="display:inline">
In the second argument of ‘($)’, namely ‘isValid "I 4764 He
trusts to you to set them free,"’
In a stmt of a 'do' block: putStrLn $ isValid "I 4764 He
trusts to you to set them free,"<br>
<br>
Roelof<br>
<br>
</span></div>
<br>
<br>
<br>
<br>
Roelof Wobben schreef op 23-2-2015 om 17:19:<br>
</div><div><div class="h5">
<blockquote type="cite">
<div>I tried it another way more like
explained on this page : <a href="http://www.seas.upenn.edu/%7Ecis194/spring13/lectures/02-ADTs.html" target="_blank">http://www.seas.upenn.edu/~cis194/spring13/lectures/02-ADTs.html</a><br>
<br>
so I tried this : <br>
<br>
parseMessage :: [Char] -> [Char]<br>
parseMessage s<br>
case Errornumber of <br>
IsDigit Errornumber -> "Geldige string"<br>
otherwise -> "Ongeldige string"<br>
where<br>
Error = s words<br>
Errornumber = Error(ErrorNumber _ _ )<br>
Errorcode = Error(_ Errorcode _ )<br>
<br>
but now I cannot use where :( <br>
<br>
Roelof<br>
<br>
<br>
<br>
<br>
Roelof Wobben schreef op 23-2-2015 om 16:10:<br>
</div>
<blockquote type="cite">
<div>Oke, <br>
<br>
Then I make there a mistake,<br>
<br>
What I try to do is to send the file to parseMessage and let
IsValid check if it´s have the right format. <br>
<br>
Then after the where I try to check if the function isValid
returns true or false. <br>
<br>
Roelof<br>
<br>
<br>
Konstantine Rybnikov schreef op 23-2-2015 om 16:03:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>Roelof,<br>
<br>
</div>
You defined isValid function in the upper-scope first,
and then you defined a symbol (variable) that re-wrote
that name to something different (string "Geldige
string"). That's why you get an error saying it doesn't
expect arguments.<br>
<br>
</div>
My suggestion is to rename second isValid.<br>
<br>
</div>
Good luck.<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Feb 23, 2015 at 4:50 PM,
Roelof Wobben <span dir="ltr"><<a href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Chaddaï Fouché schreef op 23-2-2015 om 13:20:<br>
</div>
<span>
<blockquote type="cite">
<div dir="ltr">
<div>Note that Roelof is doing the CIS 194
Homework <a href="http://www.seas.upenn.edu/%7Ecis194/fall14/hw/03-ADTs.pdf" target="_blank">http://www.seas.upenn.edu/~cis194/fall14/hw/03-ADTs.pdf</a>
(the older version of fall2014, not the one
currently running). This is much clearer than
Roelof's description, and gives among other
information an algebraic datatype to represent
log messages.<br>
<br>
<br>
-- <br>
</div>
Jedaï<br>
</div>
</blockquote>
<br>
</span> Correct and Im trying to do exercise 1 of Week
2,<br>
<br>
I have tried this solution : <br>
<br>
-- | Main entry point to the application.<br>
{-# OPTIONS_GHC -Wall #-}<br>
<br>
module LogAnalysis where<br>
<br>
import Log;<br>
import Data.Char (isLetter, isDigit) <br>
<br>
isValid :: [Char] -> Bool <br>
isValid s = go (words s)<br>
where<br>
go ([a]:b:_) = isLetter a && all isDigit
b<br>
go _ = False <br>
<br>
parseMessage :: [Char] -> [Char]<br>
parseMessage s = isValid s <br>
where <br>
isValid = "Geldige string"<br>
_ = "Ongeldige string"<br>
<br>
-- | The main entry point.<br>
main :: IO ()<br>
main = do<br>
putStrLn $ parseMessage "I 4764 He trusts to you
to set them free," <br>
<br>
<br>
but I see this error message : <br>
<br>
<div>src/LogAnalysis.hs@16:18-16:27 </div>
<div><span>Couldn't match expected type ‘[Char] ->
[Char]’ with actual type </span>
<div style="font-size:14px">[<span>Char</span>]</div>
<span> The function </span>
<div style="font-size:14px"><span>isValid</span></div>
<span> is applied to one argument, but its type </span>
<div style="font-size:14px">[<span>Char</span>]</div>
<span> has none</span><span title="Click to
show/hide extra information"> …</span><span style="display:inline"> In the expression: isValid
s In an equation for ‘parseMessage’: parseMessage
s = isValid s where isValid = "Geldige string" _ =
"Ongeldige string"<br>
<br>
<br>
</span></div>
<br>
</div>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</blockquote>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Haskell-Cafe mailing list
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a>
</pre>
</blockquote>
<br>
</div></div></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>