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. Re: Exercise of "Programming with Arrows" (Kim-Ee Yeoh)
2. Re: Exercise of "Programming with Arrows" (Kim-Ee Yeoh)
3. Re: Exercise of "Programming with Arrows" (Thiago Negri)
4. Re: Exercise of "Programming with Arrows" (Kim-Ee Yeoh)
5. capital letter name in record syntax (parsing json) (Miro Karpis)
----------------------------------------------------------------------
Message: 1
Date: Wed, 16 Oct 2013 23:47:02 +0700
From: Kim-Ee Yeoh <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Exercise of "Programming with Arrows"
Message-ID:
<capy+zdtmu8okq9y-adpeflmscdvz-vu3s1wg9c7wlp4sf6+...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
On Wed, Oct 16, 2013 at 10:33 PM, Thiago Negri <[email protected]> wrote:
> Okay, I solved the exact test case the paper proposed.
>
Awesome!
Now I've hit another problem:
>
> > loop_bufid :: SP a a
> > loop_bufid = loop (Get (\a -> Get (\b -> Put a (Put b id))))
>
Even better! I was kinda worried that you weren't going to get to this
stage.
So here's what I see:
* this is a problem harder than it look (duh!)
* that you've got this far is super-impressive: search "instance ArrowLoop
SP" to see what others have attempted
And you know what? I don't think there's a solution, not in this generality
at least.
Let's break up the problem a bit:
(A) the fifo/buffer/queue suggested by the problem needs to have
Time-Travelling Superpowers. Even when it's empty, you can query values
(supplied from the future) to keep your computation running. Oh, and
obviously, it's gotta be infinite, i.e. no fixed capacity.
(B) some SPs simply won't evaluate to anything meaningful (relative to
standard metaphysics) under loop, e.g.
existentialism :: SP (String, Bool) (String, Bool)
existentialism = let r = Get( \(_,x) -> Put( if x then "Heaven" else
"Hell", not x ) r ) in r
Either of (A) or (B) is worthy of pursuit.
(A) is very haskell-y because one can't even imagine these things using
other languages, all of which fall under strict semantics. Good evidence of
Sapir-Whorf, don't you think?
For (B), I'd think about restricting the space of SPs to get rid of some of
the junk. E.g. allow SPs such as Get...Put...Get...Get...Get..., but not
those that whose constructors VARY according to the Get binding,
essentially the Applicatives vs Monads distinction.
(B), whose mantra is Make the Meaningless/Buggy Un-Codeable, is immediately
useful in all PLs, but Haskell's type system gives the programmer uniquely
powerful leverage in that direction.
-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20131016/9e0ff2a7/attachment-0001.html>
------------------------------
Message: 2
Date: Thu, 17 Oct 2013 00:33:14 +0700
From: Kim-Ee Yeoh <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Exercise of "Programming with Arrows"
Message-ID:
<capy+zdq7cwj5awvrf7qxs_t9fhdvb8a3k46esxit9o6zixu...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
On Wed, Oct 16, 2013 at 10:33 PM, Thiago Negri <[email protected]> wrote:
> Updated gist: https://gist.github.com/thiago-negri/2e541a9f9762c727bdd4
Here:
prop_SP_first :: SP Int Int -> [(Int,Int)] -> Bool
prop_SP_first f xs = x1 == x2
where x1 = map snd xs
x2 = map snd (runSP (first f) xs)
you check that the second half of the coupled stream are equal, i.e. the
(arr id) input of (***) is equivalent across the equal sign:
g *** (arr id) = first g
What about the first half?
-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20131017/9445f346/attachment-0001.html>
------------------------------
Message: 3
Date: Wed, 16 Oct 2013 14:41:57 -0300
From: Thiago Negri <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Exercise of "Programming with Arrows"
Message-ID:
<cablnezu++kcdwh8sgjysbuo7mh9zkbxzcb9bqhmwxhc2vt5...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Thanks for your words.
The only hit I get in DuckDuckGo was this:
http://sigkill.dk/programs/arrows/
I've tried things like this, and I couldn't make it work.
Yet I've copy&pasted the code, and it worked! Even with the "loop_bufid"
test!
:(
I'll take a deeper look into it.
2013/10/16 Kim-Ee Yeoh <[email protected]>
> On Wed, Oct 16, 2013 at 10:33 PM, Thiago Negri <[email protected]> wrote:
>
>> Okay, I solved the exact test case the paper proposed.
>>
>
> Awesome!
>
> Now I've hit another problem:
>>
>> > loop_bufid :: SP a a
>> > loop_bufid = loop (Get (\a -> Get (\b -> Put a (Put b id))))
>>
>
> Even better! I was kinda worried that you weren't going to get to this
> stage.
>
> So here's what I see:
>
> * this is a problem harder than it look (duh!)
>
> * that you've got this far is super-impressive: search "instance ArrowLoop
> SP" to see what others have attempted
>
> And you know what? I don't think there's a solution, not in this
> generality at least.
>
> Let's break up the problem a bit:
>
> (A) the fifo/buffer/queue suggested by the problem needs to have
> Time-Travelling Superpowers. Even when it's empty, you can query values
> (supplied from the future) to keep your computation running. Oh, and
> obviously, it's gotta be infinite, i.e. no fixed capacity.
>
> (B) some SPs simply won't evaluate to anything meaningful (relative to
> standard metaphysics) under loop, e.g.
>
> existentialism :: SP (String, Bool) (String, Bool)
> existentialism = let r = Get( \(_,x) -> Put( if x then "Heaven" else
> "Hell", not x ) r ) in r
>
> Either of (A) or (B) is worthy of pursuit.
>
> (A) is very haskell-y because one can't even imagine these things using
> other languages, all of which fall under strict semantics. Good evidence of
> Sapir-Whorf, don't you think?
>
> For (B), I'd think about restricting the space of SPs to get rid of some
> of the junk. E.g. allow SPs such as Get...Put...Get...Get...Get..., but not
> those that whose constructors VARY according to the Get binding,
> essentially the Applicatives vs Monads distinction.
>
> (B), whose mantra is Make the Meaningless/Buggy Un-Codeable, is
> immediately useful in all PLs, but Haskell's type system gives the
> programmer uniquely powerful leverage in that direction.
>
> -- Kim-Ee
>
> _______________________________________________
> 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/20131016/3c544a4a/attachment-0001.html>
------------------------------
Message: 4
Date: Thu, 17 Oct 2013 01:16:33 +0700
From: Kim-Ee Yeoh <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Exercise of "Programming with Arrows"
Message-ID:
<capy+zdqs9odna+taos4+h2ohjkffuzdpjrsxn5otx3_wlu5...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
On Thu, Oct 17, 2013 at 12:41 AM, Thiago Negri <[email protected]> wrote:
> The only hit I get in DuckDuckGo was this:
> http://sigkill.dk/programs/arrows/
>
> I've tried things like this, and I couldn't make it work.
> Yet I've copy&pasted the code, and it worked! Even with the "loop_bufid"
> test!
>
If it's any consolation, feed 'er this:
arrswap2 :: SP (a,b) (b,a)
arrswap2 = let r = Get(\(a1,b1) -> Get(\(a2,b2) -> Put (b1,a1) (Put (b2,a2)
r))) in r
-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20131017/bdcbfdda/attachment-0001.html>
------------------------------
Message: 5
Date: Wed, 16 Oct 2013 23:18:19 +0200
From: Miro Karpis <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: [Haskell-beginners] capital letter name in record syntax
(parsing json)
Message-ID:
<cajnnbxhtagoh6azvbxmt7qwadotuhweh523bc8rmexqctmn...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
Hi, please,...is it possible to use a capital letter in record syntax data
definition? For example
data Car =
Car { CarName :: !Text
,CarColor :: !Text
} deriving (Show,Generic)
When I try this I get: parse error on input `CarName'
The thing is that I'm trying to parse a json file (with Aeson package) that
has records starting with capital letter. After that I would like to parse
the JSON file with following code:
d <- (eitherDecode <$> getJSON) :: IO (Either String [Car])
where getJSON gets the json file from url
If not, what alternative do I have?
thanks,
m.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20131016/4e2a9adf/attachment.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 64, Issue 27
*****************************************