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: How to convert a Data.Set to a Descending List?
(Felipe Almeida Lessa)
2. Re: How to convert a Data.Set to a Descending List?
(Sunil S Nandihalli)
3. Re: How to convert a Data.Set to a Descending List? (David Place)
4. bugs or lack thereof (Dennis Raddle)
5. main: <<loop>> ....? (Sunil S Nandihalli)
6. Re: main: <<loop>> ....? (Sunil S Nandihalli)
7. Re: main: <<loop>> ....? (Benjamin Edwards)
8. Re: main: <<loop>> ....? (David Virebayre)
9. Re: main: <<loop>> ....? (Sunil S Nandihalli)
10. Re: main: <<loop>> ....? (David Virebayre)
11. Re: main: <<loop>> ....? (Sunil S Nandihalli)
----------------------------------------------------------------------
Message: 1
Date: Sun, 21 Aug 2011 09:30:26 -0300
From: Felipe Almeida Lessa <[email protected]>
Subject: Re: [Haskell-beginners] How to convert a Data.Set to a
Descending List?
To: Sunil S Nandihalli <[email protected]>
Cc: [email protected]
Message-ID:
<CANd=OGEQiUk=ejhkdk+6bgj_5fxxdcyd7_wb_6dhcmyvb3n...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
On Sun, Aug 21, 2011 at 5:18 AM, Sunil S Nandihalli
<[email protected]> wrote:
> ?Is there a more efficient way to convert a Set to a descending list?
> I was looking for a function similar to Set.toAscList something like
> Set.toDecList . I feel first converting to a ascending list and then
> reversing may be in-efficient given that I actually don't need all the
> elements only a last couple of elements..
Implementing toDecList should be easy, but it's not implemented. So I
can see a couple of ideas:
a) Instead of using a 'Set X', where X is your datatype, use 'Set (Rev X)' where
newtype Rev t = Rev t
instance Eq t => Eq (Rev t) where Rev x == Rev y = x == y
instance Ord t => Ord (Rev t) where compare (Rev x) (Rev y) = compare y x
Then you would just need to use toAscList =).
b) If you need both the few first and few last elements to toAscList,
then option a doesn't work. But if you really need just a few
elements, you may use maxKey:
toDecList s =
case maxView s of
Nothing -> []
Just (x, s') -> x : toDecList s'
The problem is that 'take k . toDecList' take O(k log n) instead of O(k).
c) Data.Set.fold says that the order is unspecified. But the current
implementation does the fold in ascending order. You may cheat and
implement:
toDecList s = fold (\a b -> b . (a:)) id s []
Cheers, =)
--
Felipe.
------------------------------
Message: 2
Date: Sun, 21 Aug 2011 19:16:13 +0530
From: Sunil S Nandihalli <[email protected]>
Subject: Re: [Haskell-beginners] How to convert a Data.Set to a
Descending List?
To: Felipe Almeida Lessa <[email protected]>
Cc: [email protected]
Message-ID:
<CAP0FD71C0dkfA-aXTSHbwW6wu65U9VUSSWAK-dxe+VuAR4x=a...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Hi Felipe,
Thanks a lot for your response. I thought I should describe what I
want in a little more detail. You may have a better suggestion to
solve the problem.
I currently have a Set I want to take a couple of elements on either
side of a given key. How can I do this? Here is a description of the
subseq function in clojure.
http://clojuredocs.org/clojure_core/clojure.core/subseq
Thanks,
Sunil.
On Sun, Aug 21, 2011 at 6:00 PM, Felipe Almeida Lessa
<[email protected]> wrote:
> On Sun, Aug 21, 2011 at 5:18 AM, Sunil S Nandihalli
> <[email protected]> wrote:
>> ?Is there a more efficient way to convert a Set to a descending list?
>> I was looking for a function similar to Set.toAscList something like
>> Set.toDecList . I feel first converting to a ascending list and then
>> reversing may be in-efficient given that I actually don't need all the
>> elements only a last couple of elements..
>
> Implementing toDecList should be easy, but it's not implemented. ?So I
> can see a couple of ideas:
>
> a) Instead of using a 'Set X', where X is your datatype, use 'Set (Rev X)'
> where
>
> ?newtype Rev t = Rev t
> ?instance Eq t => Eq (Rev t) where Rev x == Rev y = x == y
> ?instance Ord t => Ord (Rev t) where compare (Rev x) (Rev y) = compare y x
>
> Then you would just need to use toAscList =).
>
> b) If you need both the few first and few last elements to toAscList,
> then option a doesn't work. ?But if you really need just a few
> elements, you may use maxKey:
>
> ?toDecList s =
> ? ?case maxView s of
> ? ? ?Nothing -> []
> ? ? ?Just (x, s') -> x : toDecList s'
>
> ?The problem is that 'take k . toDecList' take O(k log n) instead of O(k).
>
> c) Data.Set.fold says that the order is unspecified. ?But the current
> implementation does the fold in ascending order. ?You may cheat and
> implement:
>
> ?toDecList s = fold (\a b -> b . (a:)) id s []
>
> Cheers, =)
>
> --
> Felipe.
>
------------------------------
Message: 3
Date: Sun, 21 Aug 2011 10:10:17 -0400
From: David Place <[email protected]>
Subject: Re: [Haskell-beginners] How to convert a Data.Set to a
Descending List?
To: Sunil S Nandihalli <[email protected]>
Cc: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii
On Aug 21, 2011, at 9:46 AM, Sunil S Nandihalli wrote:
> I currently have a Set I want to take a couple of elements on either
> side of a given key. How can I do this?
I'll bet this is very easy using Finger Trees.
> http://www.soi.city.ac.uk/~ross/papers/FingerTree.html
> http://hackage.haskell.org/packages/archive/fingertree/0.0/doc/html/Data-FingerTree.html
____________________
David Place
Owner, Panpipes Ho! LLC
http://panpipesho.com
[email protected]
------------------------------
Message: 4
Date: Sun, 21 Aug 2011 16:53:43 -0700
From: Dennis Raddle <[email protected]>
Subject: [Haskell-beginners] bugs or lack thereof
To: Haskell Beginners <[email protected]>
Message-ID:
<cakxlvooamfbfqepwz6vk-0wxl0indah+zlwa+beekhnwec3...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
I love Haskell for the fact that my programs have relatively few bugs
other than typos or obvious mistakes in types that the compiler
catches. I just wrote about 100 lines of code to do a fairly complex
task, which is to make a map of changing loudness in a musical
document (including slopes, not just flat level changes) and after I
got the typos out and it compiled, it just worked.
I have been a professional programmer in imperative languages for 20
years, so I can think pretty accurately about what I am doing, but I'm
new to Haskell, and it's a marked difference in the ease of getting
something to work right.
Dennis
------------------------------
Message: 5
Date: Mon, 22 Aug 2011 13:02:45 +0530
From: Sunil S Nandihalli <[email protected]>
Subject: [Haskell-beginners] main: <<loop>> ....?
To: [email protected]
Message-ID:
<CAP0FD708UC9=xnetmgpssxfkn_stdzro4uehctpwwgyucqr...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Hello everybody,
main: <<loop>> -> where did this come from. I know I am not printing
it anywhere .. and it is not printing some of things I am tracing
using Debug.Trace module. Can somebody help?
Thanks,
Sunil.
------------------------------
Message: 6
Date: Mon, 22 Aug 2011 13:06:46 +0530
From: Sunil S Nandihalli <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: [email protected]
Message-ID:
<CAP0FD73J=aUC+kjXi73jsurjK8owDCOWQK0VOzy=kuhnzy7...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
I failed to tell that it prints "main : <<loop>>" and terminates... I
was not clear about it in my previous email.. but that is what I
meant. my appologies ..
On Mon, Aug 22, 2011 at 1:02 PM, Sunil S Nandihalli
<[email protected]> wrote:
> Hello everybody,
> main: <<loop>> ?-> where did this come from. I know I am not printing
> it anywhere .. and it is not printing some of things I am tracing
> using Debug.Trace module. Can somebody help?
> Thanks,
> Sunil.
>
------------------------------
Message: 7
Date: Mon, 22 Aug 2011 08:41:18 +0100
From: Benjamin Edwards <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: Sunil S Nandihalli <[email protected]>
Cc: [email protected]
Message-ID:
<can6k4njgjq6wp1y7hfza_wcmbm4eeu_wdtoo42iudp0efhz...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
Where is the code?
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://www.haskell.org/pipermail/beginners/attachments/20110822/318707b2/attachment-0001.htm>
------------------------------
Message: 8
Date: Mon, 22 Aug 2011 09:43:46 +0200
From: David Virebayre <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: Sunil S Nandihalli <[email protected]>
Cc: [email protected]
Message-ID:
<cam_wfvtxh_a3kizqj5m4j6o5ylfjmleh6ycj9jd1jwssbzy...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
2011/8/22 Sunil S Nandihalli <[email protected]>:
> I failed to tell that it prints "main : <<loop>>" and terminates... I
> was not clear about it in my previous email.. but that is what I
> meant. my appologies ..
That is exactly what ghc does. In some cases, it is able to detect a
function does nothing but loop, so it prints <<loop>> and terminates.
I don't know the details of how that works, I'm sure someone will be
able to explain it in detail, but consider this example :
david@pcdavid:~$ cat loop.hs
main = main
david@pcdavid:~$ ghc --make loop.hs
[1 of 1] Compiling Main ( loop.hs, loop.o )
Linking loop ...
david@pcdavid:~$ ./loop
loop: <<loop>>
------------------------------
Message: 9
Date: Mon, 22 Aug 2011 13:15:46 +0530
From: Sunil S Nandihalli <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: Benjamin Edwards <[email protected]>
Cc: [email protected]
Message-ID:
<cap0fd71ng+u7uzwwf72tox1ggdfhwavppfqzsp0hoa5jgyu...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Hi Benjamin,
It was longer than I could post here .. but here it is ..
https://github.com/sunilnandihalli/is2/blob/master/main.hs
Sunil.
On Mon, Aug 22, 2011 at 1:11 PM, Benjamin Edwards
<[email protected]> wrote:
> Where is the code?
------------------------------
Message: 10
Date: Mon, 22 Aug 2011 09:49:02 +0200
From: David Virebayre <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: Sunil S Nandihalli <[email protected]>, beginners
<[email protected]>
Message-ID:
<cam_wfvtd1acz-m3nttjt4fto8yb0h0lxcufily-zjjd6gzl...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
2011/8/22 Sunil S Nandihalli <[email protected]>:
> Is there a way I can find out where it is in infinite loop?
I don't know of any other way to find it than looking at the code, I
hope someone with more experience will be able to explain a better
way.
After looking at the source code you posted, does it print anything
before it prints <<loop>> ?
------------------------------
Message: 11
Date: Mon, 22 Aug 2011 13:22:18 +0530
From: Sunil S Nandihalli <[email protected]>
Subject: Re: [Haskell-beginners] main: <<loop>> ....?
To: David Virebayre <[email protected]>
Cc: beginners <[email protected]>
Message-ID:
<cap0fd72bi6wpcajcdmf2jsz8asbgtlkpcexbm95hdhnvd2f...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Yes David, it is printing some stuff.. I am trying to track down where
it is getting into infinite loop by placing a lot of trace commands ..
Thanks
Sunil.
On Mon, Aug 22, 2011 at 1:19 PM, David Virebayre
<[email protected]> wrote:
> 2011/8/22 Sunil S Nandihalli <[email protected]>:
>> Is there a way I can find out where it is in infinite loop?
>
> I don't know of any other way to find it than looking at the code, I
> hope someone with more experience will be able to explain a better
> way.
>
> After looking at the source code you posted, does it print anything
> before it prints <<loop>> ?
>
------------------------------
_______________________________________________
Beginners mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/beginners
End of Beginners Digest, Vol 38, Issue 39
*****************************************