Personal tools

Talk:Hitchhikers guide to Haskell

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(<haskell></haskell> is the correct solution.)
(Raise a problem with suggested code.)
Line 7: Line 7:
   
 
P.S. I am really enjoying this article! It provides a very nice practical introduction to Haskell. Thanks! [[User:Mforbes|Mforbes]] 10:08, 17 April 2006 (UTC)
 
P.S. I am really enjoying this article! It provides a very nice practical introduction to Haskell. Thanks! [[User:Mforbes|Mforbes]] 10:08, 17 April 2006 (UTC)
  +
  +
  +
== Problems ==
  +
  +
When I try to compile, or load into ghci, the following code I get get this error:
  +
  +
cd-fit.hs:8:13:
  +
No instance for (Text.Parsec.Prim.Stream s m Char)
  +
arising from a use of `many' at cd-fit.hs:8:13-27
  +
Possible fix:
  +
add an instance declaration for (Text.Parsec.Prim.Stream s m Char)
  +
In a stmt of a 'do' expression: dirs <- many dirAndSize
  +
In the expression:
  +
do dirs <- many dirAndSize
  +
eof
  +
return dirs
  +
In the definition of `parseInput':
  +
parseInput = do dirs <- many dirAndSize
  +
eof
  +
return dirs
  +
Failed, modules loaded: none.
  +
  +
And I panic.
  +
  +
Code:
  +
<haskell>
  +
module Main where
  +
  +
import Text.ParserCombinators.Parsec
  +
  +
data Dir = Dir Int String deriving Show
  +
  +
parseInput =
  +
do dirs <- many dirAndSize
  +
eof
  +
return dirs
  +
  +
dirAndSize =
  +
do size <- many1 digit
  +
spaces
  +
dir_name <- anyChar `manyTill` newline
  +
return (Dir (read size) dir_name)
  +
  +
main = do input <- getContents
  +
putStrLn $ "DEBUG: got input " ++ input
  +
-- compute solution and print it
  +
</haskell>
  +
  +
/Liem

Revision as of 01:08, 17 January 2009

1 Code Indentation:

Haskell code should be indented using the <haskell> tag:

http://www.haskell.org/haskellwiki/HaskellWiki:Syntax_highlighting

This also allows for proper cut and paste properties.

P.S. I am really enjoying this article! It provides a very nice practical introduction to Haskell. Thanks! Mforbes 10:08, 17 April 2006 (UTC)


2 Problems

When I try to compile, or load into ghci, the following code I get get this error:

   cd-fit.hs:8:13:
   No instance for (Text.Parsec.Prim.Stream s m Char)
     arising from a use of `many' at cd-fit.hs:8:13-27
   Possible fix:
     add an instance declaration for (Text.Parsec.Prim.Stream s m Char)
   In a stmt of a 'do' expression: dirs <- many dirAndSize
   In the expression:
       do dirs <- many dirAndSize
          eof
          return dirs
   In the definition of `parseInput':
       parseInput = do dirs <- many dirAndSize
                       eof
                       return dirs
   Failed, modules loaded: none.

And I panic.

Code:

module Main where
 
import Text.ParserCombinators.Parsec
 
data Dir = Dir Int String deriving Show
 
parseInput = 
  do dirs <- many dirAndSize
     eof
     return dirs
 
dirAndSize = 
  do size <- many1 digit
     spaces
     dir_name <- anyChar `manyTill` newline
     return (Dir (read size) dir_name)
 
main = do input <- getContents
          putStrLn $ "DEBUG: got input " ++ input
          -- compute solution and print it

/Liem