comp.lang.ada
 help / color / mirror / Atom feed
From: Paul Rubin <no.email@nospam.invalid>
Subject: Re: "functional" programming in Ada
Date: Wed, 07 Mar 2018 16:45:50 -0800
Date: 2018-03-07T16:45:50-08:00	[thread overview]
Message-ID: <871sgvtmwx.fsf@nightsong.com> (raw)
In-Reply-To: p7ouvv$sfn$1@dont-email.me

"Alejandro R. Mosteo" <alejandro@mosteo.com> writes:
> Recommendations for current functional languages? I know only of
> Haskell (and only by name).

If you want to get a deep understanding of what FP is about as a
programming language topic, I'd go with Haskell.  Be aware that Haskell
does things the way mathematicians do things: very rigorous and precise
at the actual logical level, but more casual and relaxed at the
organizational level.

If you want something more like Ada, i.e. designed with attention to
large-scale engineering features like separating spec from
implementation, try Standard ML or the somewhat looser OCaml.  Either of
these will be a less mathematically rigorous than Haskell at the value
and expression level, but have a much more serious module system,
something like Ada's.

Erlang and Elixir are more like Lisp or Python: they give a very quick
and productive way to get simple things done, without much help for
larger-scale rigor.  The interesting thing about them is their
concurrency system implements what the programmer sees as isolated
lightweight processes communicating by message passing.  That means you
can split a big problem into smaller ones, so you can use low-tech
methods on the small problems, letting the process isolation keep the
subproblem solutions from interfering with each other too much.

FWIW you can think of Erlang as a concurrent Lisp system with a front
end for a funky Prolog-like syntax.  Elixir is the same thing except the
surface syntax is designed to look like Ruby.  There's also LFE
(Lisp-flavored Erlang), same idea except it looks like actual Lisp.

  parent reply	other threads:[~2018-03-08  0:45 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-06 11:34 "functional" programming in Ada Alejandro R. Mosteo
2018-03-06 13:09 ` Dmitry A. Kazakov
2018-03-06 14:35   ` Alejandro R. Mosteo
2018-03-06 15:08     ` Dmitry A. Kazakov
2018-03-06 16:00       ` Manuel Collado
2018-03-06 16:37         ` Dmitry A. Kazakov
2018-03-06 22:16           ` Manuel Collado
2018-03-07  8:41             ` Dmitry A. Kazakov
2018-03-07  4:46         ` Paul Rubin
2018-03-06 13:29 ` Mehdi Saada
2018-03-06 14:34   ` Alejandro R. Mosteo
2018-03-06 14:36     ` Mehdi Saada
2018-03-06 15:27       ` Alejandro R. Mosteo
2018-03-06 16:26       ` Jeffrey R. Carter
2018-03-06 20:17       ` Randy Brukardt
2018-03-07 14:30         ` Alejandro R. Mosteo
2018-03-06 15:01 ` Dan'l Miller
2018-03-06 15:25   ` Alejandro R. Mosteo
2018-03-07 10:07 ` Maciej Sobczak
2018-03-07 10:52   ` Mehdi Saada
2018-03-07 13:11     ` Pascal Obry
2018-03-07 13:53       ` Dmitry A. Kazakov
2018-03-07 16:13       ` Dan'l Miller
2018-03-12  0:13         ` Robert I. Eachus
2018-03-08  3:34       ` Randy Brukardt
2018-03-08  8:23         ` Dmitry A. Kazakov
2018-03-08 22:49           ` G. B.
2018-03-09  8:38             ` Dmitry A. Kazakov
2018-03-09  8:40           ` Simon Wright
2018-03-09 13:39             ` Dmitry A. Kazakov
2018-03-07 15:03   ` Alejandro R. Mosteo
2018-03-07 15:16     ` Alejandro R. Mosteo
2018-03-07 20:34     ` Robert A Duff
2018-03-07 22:47     ` Jeffrey R. Carter
2018-03-08  0:26     ` Shark8
2018-03-08  0:45     ` Paul Rubin [this message]
2018-03-08 11:07       ` Alejandro R. Mosteo
2018-03-08 18:24 ` G. B.
2018-03-09 14:41   ` Alejandro R. Mosteo
replies disabled

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