Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://mail.haskell.org/cgi-bin/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. Re: crypto random UUID generation (David McBride)
2. Problem install Gtk (Arnim Fiebig)
3. Sorting (mike h)
----------------------------------------------------------------------
Message: 1
Date: Tue, 13 Dec 2016 08:18:05 -0500
From: David McBride <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] crypto random UUID generation
Message-ID:
<CAN+Tr42_C+T5mUHsLkmPuAh0+U=smm1qrucaf9vjh1jgk5s...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
I was hasty with my words. Exceptions in haskell have always been my
cryptonite. If you are handling the only known exception properly then you
are doing everything right.
On Tue, Dec 13, 2016 at 6:41 AM, Ovidiu Deac <[email protected]> wrote:
> Thanks! It works.
>
> Why is this a "quick and dirty" fix and what would be the "clean" fix?
>
> On Mon, Dec 12, 2016 at 8:15 PM, David McBride <[email protected]> wrote:
>
>> The problem is with
>> Left err -> throwIO err
>>
>> Because of the type of 'runCRand', we know err is an instance of
>> ContainsGenError e0, but which one? We need a concrete error type before
>> we can run this code. Looking at the docs there seems to be only one
>> instance of ContainsGenError, GenError, so a quick an dirty solution would
>> be to change it to
>>
>> Left err -> throwIO (err :: GenError) -- should work
>>
>> But keep in mind, if there were any other ContainsGenError instances,
>> like from an external library that is adding a new type of random generator
>> to this library that fails in a new way, you would not be catching that.
>>
>>
>> On Mon, Dec 12, 2016 at 12:52 PM, Ovidiu Deac <[email protected]>
>> wrote:
>>
>>> I have to produce a crypto random UUID.
>>>
>>> I haven't found simple examples. and I used the one from hre (see type
>>> CRand) http://hackage.haskell.org/package/monadcryptorandom-0.7.0/d
>>> ocs/Control-Monad-CryptoRandom.html#v:getCRandomR
>>>
>>> My attempt is the following:
>>>
>>> cryptoRandomUUID :: IO UUID.UUID
>>> cryptoRandomUUID = do
>>> g <- newGenIO:: IO SystemRandom
>>> case runCRand impl g of
>>> Left err -> throwIO err
>>> Right (v, g') -> return v
>>>
>>> where impl = do
>>> w1 <- getCRandom
>>> w2 <- getCRandom
>>> w3 <- getCRandom
>>> w4 <- getCRandom
>>> return $ UUID.fromWords w1 w2 w3 w4
>>>
>>> ...but the compilation fails miserably with:
>>>
>>> • Ambiguous type variable ‘e0’ arising from a use of ‘runCRand’
>>> prevents the constraint ‘(ContainsGenError e0)’ from being solved.
>>> Relevant bindings include
>>> impl :: CRandT
>>> SystemRandom e0 Data.Functor.Identity.Identity
>>> UUID.UUID
>>> (bound at src/Party.hs:75:9)
>>> Probable fix: use a type annotation to specify what ‘e0’ should be.
>>> These potential instance exist:
>>> instance ContainsGenError GenError
>>> -- Defined in ‘Control.Monad.CryptoRandom’
>>> • In the expression: runCRand impl g
>>> In a stmt of a 'do' block:
>>> case runCRand impl g of {
>>> Left err -> throwIO err
>>> Right (v, g') -> return v }
>>> In the expression:
>>> do { g <- newGenIO :: IO SystemRandom;
>>> case runCRand impl g of {
>>> Left err -> throwIO err
>>> Right (v, g') -> return v } }
>>> ...
>>>
>>> What's the problem here?
>>> Are there some good examples for generating crypto-randoms?
>>>
>>> Thanks!
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> [email protected]
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>
>>>
>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20161213/bc825b09/attachment-0001.html>
------------------------------
Message: 2
Date: Tue, 13 Dec 2016 14:23:46 +0100
From: Arnim Fiebig <[email protected]>
To: [email protected]
Subject: [Haskell-beginners] Problem install Gtk
Message-ID: <[email protected]>
Content-Type: text/plain; charset="utf-8"; Format="flowed"
The same happen on Win8.1 and another Pc with win7
1. install 'HaskellPlatform-8.0.1-full-x86_64-setup-a' ok
2. copy 'gtk+-bundle_3.6.4-20130513_win64' to C:\Gtk\ ok
3. 'cabal install gtk' failed
Thanks for help
Guenter
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20161213/61da7db1/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: phjidiombkcgeenh.gif
Type: image/gif
Size: 8169 bytes
Desc: not available
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20161213/61da7db1/attachment-0001.gif>
------------------------------
Message: 3
Date: Tue, 13 Dec 2016 14:36:39 +0000
From: mike h <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: [Haskell-beginners] Sorting
Message-ID: <[email protected]>
Content-Type: text/plain; charset="utf-8"
Hi,
I’m trying to sort a list of tuples. A char and a count of that char (Char ,
Int)
e.g.
[ ('r',2), ('c',2),('a', 2), ('b',3), ('f',2)]
e.g. ‘r’ occurs twice etc.
The order should be based on the count first and then ties broken by the
natural ordering of char.
So
[ ('r',2), ('c',2),('a', 2), ('b',3), ('f',2)]
will sort as
[('b',3),('a', 2), ('c',2),('f',2), ('r',2)]
I initially tried variants on
sortBy (compare `on` snd)
and then made a type Tup = T (Char, Int)
and defined Eq and then got to the point where I felt that this had become too
difficult for a simple problem and concluded that I’m missing a point somewhere
and need a bit of help!
Many thanks
M
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20161213/1418403f/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 102, Issue 2
*****************************************