[Haskell-cafe] Re: Learning about Programming Languages
(specifically Haskell)
Rafael Gustavo da Cunha Pereira Pinto
RafaelGCPP.Linux at gmail.com
Mon May 3 06:43:40 EDT 2010
If you are running from GHCi, just type run 100 at the prompt..
If you intend to compile it, you have to add
main = print $ run 100
The compiler adds a call to main::IO (), which is intended to be the main
entry point of your code.
We need to add print, as run has type
run::Int->[Door]
so run 100 has type [Door].
print is
print::(Show a) => a -> IO ()
The IO () stands for an empty IO monad, which is the black magic of haskell,
intended to separate pure code from I/O side-effects...
On Mon, May 3, 2010 at 06:31, Samuel Williams <
space.ship.traveller at gmail.com> wrote:
> Also, one more thing - if someone could write some comments to go along
> with the source code that explain what it is doing, that would be really
> helpful. I can see the general structure, but I don't know the ins and outs
> of Haskell. If someone could augment the example with comments explaining
> what the functions do that would be great!
>
> data *Door* = *Open* | *Closed* deriving *Show*
>
>
> toggle *Open* = *Closed*
> toggle *Closed* = *Open*
>
>
> pass k = zipWith ($) (cycle $ replicate k *id* ++ [toggle])
>
>
> run n = foldl (flip pass) (replicate n *Closed*) [0..n]
>
> Do I need to add run 100 to the end of the example for it to actually do
> something?
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
--
Rafael Gustavo da Cunha Pereira Pinto
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20100503/442c4e68/attachment-0001.html
More information about the Haskell-Cafe
mailing list