[Haskell-cafe] Useful: putCharLn {inspire by the Int->[Char] thread
Gene A
yumagene at gmail.com
Sat Aug 19 13:21:36 EDT 2006
The thread on the use of "show" and print to display an Int value,
brought up a problem I had early on... the one of cleanly displaying a
Char value, on a line all by itself.. My first attempts:
This was just plain hard to read: with the character t being where it was:
Prelude> putChar $ head "this and that"
tPrelude>
-----------------------
So I tried this and of course ... type mismatch:
Prelude> putStrLn $ head "this and that"
<interactive>:1:16:
Couldn't match `String' against `Char'
Expected type: [String]
Inferred type: [Char]
In the first argument of `head', namely `"this and that"'
In the second argument of `($)', namely `head "this and that"'
----------------------
So I did this... to manually turn it to a string and it does work, but
a little cumbersome to work into other function calls:
Prelude> putStrLn $ (head "this and that"):[]
t
-------------
so the definition of putCharLn came to life {may be in some library already
and I just haven't found it yet.. but it is in my toolbox now}:
Prelude> let putCharLn c = putStrLn (c:[])
Prelude>
and an application of it:
Prelude> putCharLn $ head "this and that"
t
---------------
now I also have the char to string conversion alone:
c2Str c = c:[]
Prelude> let c2Str c = c:[]
Prelude> c2Str 'A'
"A"
------------------
Now this is almost too trivial a thing to mention these gizmos...
what with all the monadic constructions that greater minds toss
about on this list.. and I am trying to get understanding of that
still, but ....
sometimes we just accept the unacceptable little irritants
rather than just code a solution, no matter how simple it is.
There are probably troves of simple workarounds out there
that seem too trivial to mention but hey, share 'em...
might hit a guy like me that says. "now why didn't I think to do that?"
happy days,
gene
More information about the Haskell-Cafe
mailing list