Send Beginners mailing list submissions to
        beginners@haskell.org

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
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1. Re:  Execution time of Mergesort (KC)
   2. Re:  Passing a file containing a list as an input
      (Olivier Revollat)
   3. Re:  Passing a file containing a list as an input
      (Olivier Revollat)


----------------------------------------------------------------------

Message: 1
Date: Thu, 5 Jul 2018 20:29:16 -0700
From: KC <kc1...@gmail.com>
To: Haskell Beginners <beginners@haskell.org>
Subject: Re: [Haskell-beginners] Execution time of Mergesort
Message-ID:
        <camlkxynck7ddicnmmx8dyybbrmla_pwznopizygfkicmnm9...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Appending to lists is slow

--
Sent from an expensive device which will be obsolete in a few months
Casey

On Thu, Jul 5, 2018, 7:14 PM Awsaf Rahman, <awsafrahman1...@gmail.com>
wrote:

> I did consider strictness and that is why the execution time has come down
> from 16 seconds to 12 seconds! But I can't seem to find the issue anymore!
>
> On Fri, Jul 6, 2018 at 4:06 AM, KC <kc1...@gmail.com> wrote:
>
>> I haven't looked at the code much yet
>> But might want to consider strictness 😎
>>
>> --
>> Sent from an expensive device which will be obsolete in a few months
>> Casey
>>
>> On Thu, Jul 5, 2018, 7:01 PM Awsaf Rahman, <awsafrahman1...@gmail.com>
>> wrote:
>>
>>> Hello everyone!
>>>
>>> I am trying to find out the execution time of mergesort for a list size
>>> of 1 million integers. I have done the same in Erlang as well and the
>>> execution time in Erlang was around 0.93 seconds. I have implemented the
>>> program in almost the same way in Haskell as well but for some reason the
>>> Haskell implementation is taking around 12 seconds which doesn't seem
>>> right.
>>>
>>> Here is the implementation in Haskell:
>>>
>>> *{-# LANGUAGE OverloadedStrings #-}*
>>> *{-# LANGUAGE BangPatterns #-}*
>>> *import Control.Exception*
>>> *import Formatting*
>>> *import Formatting.Clock*
>>> *import System.Clock*
>>> *import Control.DeepSeq*
>>>
>>> *mergesort [] = []*
>>> *mergesort [x] = [x]*
>>> *mergesort xs = let (lhalf, rhalf) = splitAt (length xs `div` 2) xs*
>>> *               in merge' (mergesort lhalf) (mergesort rhalf)*
>>>
>>> *merge' lhalf rhalf = merge lhalf rhalf []*
>>>
>>> *merge [] [] acc = reverse acc*
>>> *merge [] y acc = reverse acc ++ y*
>>> *merge x [] acc = reverse acc ++ x*
>>>
>>> *merge (l:ls) (r:rs) acc*
>>> *        | l < r = merge ls (r:rs) (l:acc)*
>>> *        | otherwise = merge rs (l:ls) (r:acc)*
>>>
>>> *toList :: String -> [Integer]*
>>> *toList input = read ("[" ++ input ++ "]")*
>>>
>>> *main = do*
>>> *    file <- getLine*
>>> *    contents <- readFile file*
>>> *    let !unsortedlist = (toList contents)*
>>> *    start <- getTime Monotonic*
>>> *    evaluate(force (mergesort unsortedlist))*
>>> *    end <- getTime Monotonic*
>>> *    fprint (timeSpecs % "\n") start end*
>>>
>>>
>>> What am I doing wrong?
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners@haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180705/5637731d/attachment-0001.html>

------------------------------

Message: 2
Date: Fri, 6 Jul 2018 09:33:32 +0200
From: Olivier Revollat <revol...@gmail.com>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] Passing a file containing a list as
        an input
Message-ID:
        <CA+nXgrW=wl7kk_rddk3hpbibsxjbsmhz7ccbnfibcuqgxod...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hi,
Maybe you should try "interact"

main = io (map processIt)
io f = interact (unlines . f . lines)



Le jeu. 5 juil. 2018 à 22:21, Awsaf Rahman <awsafrahman1...@gmail.com> a
écrit :

> Hello everyone!
>
> I am really struggling with Haskell I/O.
>
> I have written a mergesort program and as an input to that program I want
> to use a file containing a list of 1000 integers. Let's say the contents of
> the file look like this
>
> [120, 400, 500 , 20, 100 ..]
>
> How can I achieve that? I am trying to write a main function that takes
> the file as an input and passes the list to my mergesort function..
>
> Regards
> Awsaf Rahman
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180706/3e6992ea/attachment-0001.html>

------------------------------

Message: 3
Date: Fri, 6 Jul 2018 09:35:47 +0200
From: Olivier Revollat <revol...@gmail.com>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] Passing a file containing a list as
        an input
Message-ID:
        <ca+nxgrub-yvro8qmkfjpbdqs9qdt7wunchls3evu7xi9ok7...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

See also http://book.realworldhaskell.org/read/io.html

Example (take stdin and stdout the uppercased)

import Data.Char(toUpper)
main = interact (map toUpper)



Le ven. 6 juil. 2018 à 09:33, Olivier Revollat <revol...@gmail.com> a
écrit :

> Hi,
> Maybe you should try "interact"
>
> main = io (map processIt)
> io f = interact (unlines . f . lines)
>
>
>
> Le jeu. 5 juil. 2018 à 22:21, Awsaf Rahman <awsafrahman1...@gmail.com> a
> écrit :
>
>> Hello everyone!
>>
>> I am really struggling with Haskell I/O.
>>
>> I have written a mergesort program and as an input to that program I want
>> to use a file containing a list of 1000 integers. Let's say the contents of
>> the file look like this
>>
>> [120, 400, 500 , 20, 100 ..]
>>
>> How can I achieve that? I am trying to write a main function that takes
>> the file as an input and passes the list to my mergesort function..
>>
>> Regards
>> Awsaf Rahman
>> _______________________________________________
>> Beginners mailing list
>> Beginners@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180706/39c5bb4f/attachment-0001.html>

------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 121, Issue 5
*****************************************

Reply via email to