comp.lang.ada
 help / color / mirror / Atom feed
From: Paul Rubin <no.email@nospam.invalid>
Subject: Re: If not Ada, what else...
Date: Thu, 30 Jul 2015 11:26:04 -0700
Date: 2015-07-30T11:26:04-07:00	[thread overview]
Message-ID: <87bnetmrib.fsf@jester.gateway.sonic.net> (raw)
In-Reply-To: mpck72$abv$1@dont-email.me

Georg Bauhaus <bauhaus@futureapps.invalid> writes:
> Aren't these features (tail recursion, strict, ...) among the reasons
> why Haskell got lazy strategies in the first place?

Tail recursion is a standard FP thing and you have to do it in Scheme
and ML as well.  Haskell's lazy evaluation was an interesting experiment
that has its good and bad points.  The interesting next-generation FP
languages like Idris seem to have gone back to strict evaluation, though
there's stuff happening in the theory community that might show up in
languages further down the road, that might allow strict/lazy
combinations whose behavior is tracked by type systems better than has
been done in the past.

>> p2 xs m = sum . map head . takeWhile (not . null) . iterate (drop m) $ xs
> (Nitpick: This loops when m<=0, try "p2 [1] 0". (*)).  

Yeah, it was supposed to only be illustrative of how to compute the sum
without all that explicit recursion.  To handle the non-positve case, add
   p2 _ m | m <= 0 = 0

> {-# LANGUAGE BangPatterns #-}, news to me, thanks!), I waited minutes after
> intense disk swapping for
> *Main> p2 [1 .. 123456789] 6

OK, yeah, as predicted, the problem is that ghci isn't noticing it can
optimize sum as strict.  ghc -O would probably do it.  Try writing:

    import Data.List (foldl1')
    p2 :: [Int] -> Int -> Int
    p2 _ m | m <= 0 = 0
    p2 xs m = foldl1' (+)
              . map head
              . takeWhile (not . null)
              . iterate (drop m)
              $ xs

(Mostly the same thing, except for the formatting).

> Seems another feature of prototyping is apparent: can't use larger data sets.
> I guess I have also missed some way or other of controlling the prototyping
> interpreter (GHCi) that would make it produce more efficient code, ways that
> would be "obvious" to ... of course ;-)

I usually run ghci in an emacs window so I can kill the window (which
also kills the ghci process) if it goes berserk.  Also run "w" in
another window so you can see the memory consumption climbing in the
case of a space leak.  You can usually ctrl-c out of it if you do it
before the system is pushed into swapping.  Or you could use ulimit to
bound the memory footprint, or run in a VM, or whatever.


  reply	other threads:[~2015-07-30 18:26 UTC|newest]

Thread overview: 168+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-20 10:39 If not Ada, what else Alex R. Mosteo
2011-04-20 10:51 ` Ludovic Brenta
2011-04-21  8:47   ` Alex R. Mosteo
2011-04-20 11:53 ` Maciej Sobczak
2011-04-21  8:46   ` Alex R. Mosteo
2011-04-23  2:08     ` Peter C. Chapin
2011-04-21 17:19 ` Robert Matthews
2011-04-21 19:02   ` Georg Bauhaus
2011-04-21 19:25   ` Florian Weimer
2011-04-22 15:50     ` Robert Matthews
2011-04-22 17:49       ` Brad Cantrell
2011-04-23  2:20         ` Peter C. Chapin
2011-04-23  9:55           ` Georg Bauhaus
2011-04-23 11:17             ` Peter C. Chapin
2011-04-22 21:39       ` Florian Weimer
2011-04-23  2:26         ` Peter C. Chapin
2011-04-23  9:52 ` björn lundin
2011-04-23 11:50 ` Piotr Trojanek
2011-04-23 12:23   ` Dmitry A. Kazakov
2011-04-23 14:30     ` Georg Bauhaus
2011-04-23 15:04       ` Dmitry A. Kazakov
2011-04-23 16:16     ` Piotr Trojanek
2011-04-28 12:55   ` C++/cmake project, injecting Ada... (was Re: If not Ada, what else...) Alex R. Mosteo
2011-04-28 16:34     ` C++/cmake project, injecting Ada Ludovic Brenta
2011-04-29  8:17       ` Alex R. Mosteo
2011-04-29 12:45         ` stefan-lucks
2015-07-02 10:44         ` Alejandro R. Mosteo
2011-05-28 17:33     ` C++/cmake project, injecting Ada... (was Re: If not Ada, what else...) Dirk Heinrichs
2015-07-03 19:21 ` If not Ada, what else luvhed
2015-07-03 20:50   ` Paul Rubin
2015-07-04  8:19 ` Rod Kay
2015-07-08 18:11 ` jm.tarrasa
2015-07-08 20:33   ` Anh Vo
2015-07-09  6:36     ` jm.tarrasa
2015-07-08 22:15   ` David Botton
2015-07-09  7:28     ` jm.tarrasa
2015-07-09  9:54       ` G.B.
2015-07-09 12:57       ` Dennis Lee Bieber
2015-07-09 18:25       ` David Botton
2015-07-09 21:15         ` Bob Duff
2015-07-09 22:23           ` David Botton
2015-07-09 22:39             ` Paul Rubin
2015-07-10  0:20               ` David Botton
2015-07-10  4:26                 ` Paul Rubin
2015-07-10 15:01                   ` David Botton
2015-07-10 16:07                     ` David Botton
2015-07-10 17:39                       ` Bob Duff
2015-07-10 18:22                     ` Paul Rubin
2015-07-10 19:10                       ` David Botton
2015-07-10 19:43                         ` Patrick Noffke
2015-07-11 10:46                           ` Brian Drummond
2015-07-11 10:59                             ` Björn Lundin
2015-07-11 13:41                               ` Georg Bauhaus
2015-07-11 14:11                                 ` Björn Lundin
2015-07-13 14:02                             ` Patrick Noffke
2015-07-13 14:16                               ` David Botton
2015-07-13 14:54                                 ` Maciej Sobczak
2015-07-16 20:19                                 ` Serge Robyns
2015-07-17  1:50                                   ` David Botton
2015-07-17 17:07                                     ` Anh Vo
2015-07-17 21:28                                       ` Serge Robyns
2015-07-17 22:53                                         ` Anh Vo
2015-07-19 14:31                                       ` David Botton
2015-07-19 16:20                                         ` Paul Rubin
2015-07-19 20:55                                           ` Jeffrey R. Carter
2015-07-19 21:15                                             ` Paul Rubin
2015-07-20 16:08                                               ` Tero Koskinen
2015-07-20 17:31                                                 ` Paul Rubin
2015-07-21  1:16                                                   ` Dennis Lee Bieber
2015-07-21  3:09                                                     ` Shark8
2015-07-21 12:46                                                       ` Dennis Lee Bieber
2015-07-21  5:43                                                   ` J-P. Rosen
2015-07-21 12:47                                                     ` Dennis Lee Bieber
2015-07-21 12:55                                                       ` J-P. Rosen
2015-07-19 22:38                                           ` David Botton
2015-07-21  6:30                                     ` Gour
2015-07-21 16:24                                       ` David Botton
2015-07-21 17:29                                         ` Niklas Holsti
2015-07-21 18:51                                           ` Simon Wright
2015-07-21 19:36                                             ` David Botton
2015-07-22  8:44                                               ` Pascal Obry
2015-07-22 12:00                                               ` Jean François Martinez
2015-07-27 22:59                                                 ` Randy Brukardt
2015-07-28  7:00                                                   ` Georg Bauhaus
2015-07-28  7:22                                                     ` Paul Rubin
2015-07-28 10:36                                                       ` darkestkhan
2015-07-28 10:58                                                       ` G.B.
2015-07-28 20:33                                                       ` Randy Brukardt
2015-07-28 10:40                                                   ` darkestkhan
2015-07-29  7:30                                                     ` Jacob Sparre Andersen
2015-07-29  8:55                                                       ` Simon Wright
2015-07-29 12:38                                                   ` EGarrulo
2015-07-29 13:06                                                     ` EGarrulo
2015-07-29 15:41                                                     ` Paul Rubin
2015-07-29 17:01                                                       ` Björn Lundin
2015-07-29 18:27                                                         ` Paul Rubin
2015-07-29 18:52                                                           ` Björn Lundin
2015-07-29 22:18                                                             ` Paul Rubin
2015-07-30  6:23                                                               ` Dmitry A. Kazakov
2015-07-30 16:48                                                                 ` David Botton
2015-07-30 18:10                                                               ` Randy Brukardt
2015-07-29 19:18                                                           ` Georg Bauhaus
2015-07-29 19:42                                                             ` Randy Brukardt
2015-07-30  4:54                                                               ` Paul Rubin
2015-07-30  6:15                                                                 ` Niklas Holsti
2015-07-30  6:34                                                                 ` Dmitry A. Kazakov
2015-07-30  6:47                                                                   ` Paul Rubin
2015-07-30  7:20                                                                     ` Dmitry A. Kazakov
2015-07-30 23:13                                                                       ` Paul Rubin
2015-07-29 17:07                                                       ` Stefan.Lucks
2015-07-29 17:47                                                         ` Paul Rubin
2015-08-21 23:03                                                           ` Waldek Hebisch
2015-08-22  3:24                                                             ` Paul Rubin
2015-08-23 16:26                                                               ` Waldek Hebisch
2015-08-23 17:18                                                                 ` Jeffrey R. Carter
2015-08-23 17:31                                                                   ` Waldek Hebisch
2015-08-23 19:32                                                                     ` Jeffrey R. Carter
2015-08-23 23:01                                                               ` Waldek Hebisch
2015-07-29 19:32                                                       ` Georg Bauhaus
2015-07-30  5:17                                                         ` Paul Rubin
2015-07-30  7:38                                                           ` Georg Bauhaus
2015-07-30 18:26                                                             ` Paul Rubin [this message]
2015-07-30 18:37                                                               ` Paul Rubin
2015-07-31  7:14                                                                 ` Georg Bauhaus
2015-07-30 10:59                                                     ` darkestkhan
2015-08-19 22:19                                                 ` rriehle
2015-08-19 22:58                                                   ` Anh Vo
2015-08-19 23:32                                                     ` rriehle
2015-08-20  1:08                                                       ` Peter Chapin
2015-08-21 15:14                                                       ` Anh Vo
2015-08-21 16:07                                                         ` Anh Vo
2015-08-21 17:17                                                           ` Patrick Noffke
2015-07-21 19:51                                             ` Dmitry A. Kazakov
2015-07-21 21:06                                               ` Simon Wright
2015-07-21 21:51                                                 ` Dmitry A. Kazakov
2015-07-21 22:55                                                   ` Jeffrey R. Carter
2015-07-22  7:26                                                     ` Dmitry A. Kazakov
2015-07-22  9:05                                                       ` Mart van de Wege
2015-07-22 10:27                                                         ` Dmitry A. Kazakov
2015-07-22  7:01                                                   ` Simon Wright
2015-07-22  7:35                                                     ` Dmitry A. Kazakov
2015-07-27 23:02                                                       ` Randy Brukardt
2015-07-27 22:44                                                 ` Randy Brukardt
2015-07-28  7:30                                                   ` Simon Wright
2015-07-28 20:39                                                     ` Randy Brukardt
2015-07-29  7:12                                                       ` Simon Wright
2015-07-29 11:11                                                         ` vincent.diemunsch
2015-07-29 19:31                                                         ` Randy Brukardt
2015-07-22 12:53                                               ` Vincent
2015-07-22 13:59                                                 ` Dmitry A. Kazakov
2015-07-21 20:05                                             ` J-P. Rosen
2015-07-21 21:02                                               ` Simon Wright
2015-07-21 23:40                                               ` Shark8
2015-07-22 12:58                                               ` vincent.diemunsch
2015-07-22 13:40                                                 ` J-P. Rosen
2015-07-22 14:29                                                   ` Vincent
2015-07-21 19:30                                           ` David Botton
     [not found]                                     ` <30336c64-ceaa-4887-adee-18cc58aef012@googlegroups.com>
2015-08-21  5:21                                       ` Shark8
2015-08-21 17:39                                       ` David Botton
2015-07-11  2:31                         ` Paul Rubin
2015-07-11  6:00                           ` J-P. Rosen
2015-07-11  7:51                           ` Georg Bauhaus
2015-07-11  8:47                             ` Dmitry A. Kazakov
2015-07-21  1:34                           ` Luke A. Guest
2015-07-27  9:09                       ` Assertions in SPARK (Was: If not Ada, what else...) Jacob Sparre Andersen
2015-07-27 10:56                         ` G.B.
2015-07-27 21:59                           ` Peter Chapin
2015-07-11 11:10                   ` If not Ada, what else Pascal Obry
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox