Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Parallel and Concurrent Programming in Haskell -
Rate-Limiting the Producer (Kilian Gebhardt)
2. Re: Error Message when trying to solve alphametic(SEND +
MORE = MONEY) (Matthew Moppett)
----------------------------------------------------------------------
Message: 1
Date: Mon, 27 Jan 2014 15:31:29 +0100
From: Kilian Gebhardt <[email protected]>
To: "[email protected]" <[email protected]>
Subject: [Haskell-beginners] Parallel and Concurrent Programming in
Haskell - Rate-Limiting the Producer
Message-ID: <[email protected]>
Content-Type: text/plain; charset="iso-8859-1"
Hi,
I'm working through Simon Marlows Parallel and Concurrent Programming in
Haskell.
In Chapter 4, p. 69, or
http://chimera.labs.oreilly.com/books/1230000000929/ch04.html#_rate_limiting_the_producer
there is the task to extend a stream processing module based on
Control.Monad.Par in such a way that the producer is rate-limited, i.e.
the producer should not produce more than the consumer can consume.
The book suggests the following type:
data IList a
= Nil
| Cons a (IVar (IList a))
| Fork (Par ()) (IList a)
I struggle to construct the functions for this type, as I don't know
what to do with the IList in the Fork case. It seems more natural to me,
to have an IVar (IList a) instead, whose value is provided by the
computation in Par () in the following way:
Fork (Par ()) (IVar (IList a))
streamFromListLimited :: NFData a => Int -> Int -> [a] -> Par (Stream a)
streamFromListLimited f d xs = do
var <- new
fork $ loop f xs var
return var
where
loop :: NFData a => Int -> [a] -> Stream a -> Par ()
loop _ [] var = put var Nil
loop 0 (x:xs) var = do
tail <- new
put var (Fork (loop d xs tail) tail)
loop n (x:xs) var = do
tail <- new
put var (Cons x tail)
loop (n-1) xs tail
Can someone give me a hint?
Thanks,
Kilian
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20140127/eacdb79a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20140127/eacdb79a/attachment-0001.sig>
------------------------------
Message: 2
Date: Mon, 27 Jan 2014 23:08:45 +0700
From: Matthew Moppett <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Error Message when trying to solve
alphametic(SEND + MORE = MONEY)
Message-ID:
<camlejzaenwavkcsh9jp0axbt--zesuf_h7k5_-xaymx6lhj...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
No worries, Sok Ha :-)
On Sun, Jan 26, 2014 at 8:29 PM, Sok Ha Chang <[email protected]> wrote:
> Thank you to kind help.
> From now on, I will follow your way.
> Have a nice day.
> Thanks, again.
>
> Sincerely, S. Chang
>
> 2014. 1. 26. ?? 9:31 Matthew Moppett <[email protected]> ??:
>
> 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 <[email protected]
> > wrote:
>
>> Hi Sok Ha.
>>
>> expr = show send ++ "+" ++ show more ++ "=" show money
>>
>>
>>
>> On Sun, Jan 26, 2014 at 7:16 PM, Sok Ha Chang <[email protected]> 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
>> > [email protected]
>> > http://www.haskell.org/mailman/listinfo/beginners
>>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20140127/28aa0393/attachment-0001.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 67, Issue 26
*****************************************