From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Panicz Maciej Godek Newsgroups: gmane.lisp.guile.user,gmane.lisp.guile.devel Subject: Re: Request for feedback on SRFI-126 Date: Wed, 30 Sep 2015 08:39:44 +0200 Message-ID: References: <87zj08t5w1.fsf@T420.taylan> <1555352.V50ucWGNsT@fluss> <2004212.koJWAIKy7V@fluss> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=089e01227ec42ec1600520f1325e X-Trace: ger.gmane.org 1443675080 10112 80.91.229.3 (1 Oct 2015 04:51:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 1 Oct 2015 04:51:20 +0000 (UTC) Cc: "guile-user@gnu.org" , guile-devel To: Arne Babenhauserheide Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Thu Oct 01 06:51:20 2015 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZhVpv-0007jb-KE for guile-user@m.gmane.org; Thu, 01 Oct 2015 06:51:19 +0200 Original-Received: from localhost ([::1]:37695 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhVpu-0005q2-TD for guile-user@m.gmane.org; Thu, 01 Oct 2015 00:51:18 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41581) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhB3L-0005sw-BL for guile-user@gnu.org; Wed, 30 Sep 2015 02:39:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZhB3J-00075L-HA for guile-user@gnu.org; Wed, 30 Sep 2015 02:39:47 -0400 Original-Received: from mail-wi0-x230.google.com ([2a00:1450:400c:c05::230]:38137) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZhB3J-000759-7K; Wed, 30 Sep 2015 02:39:45 -0400 Original-Received: by wiclk2 with SMTP id lk2so46271194wic.1; Tue, 29 Sep 2015 23:39:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=MMB6nWsx6cmFYJ28BMhx9mctuUC+pMSa+aG17b1fHh4=; b=q+nRhnl5tI8TxyzzSs1OkLXl+KlGfKLDev0BnQXrsz8xNT3ksK2atld7x9ZviQ2qFQ MZQI0EGsX8dbU7pGplhWpEoVsMmNOQq1dicrEttQW4gcsoPDC2lhGRnkjKvqOm3cB07s zeZqzhPUR2FxhD7fvwqqaH2Plm39crGpdK8gbDtwDi7j7l8SOEwiv5oyMIbJYIRsUf/O RoKGGSM2x3fvydoubexDez8Dk/wXulAW5fv1oDkLo67YZW0tzFlv0RzG4wB4AeRZpS2w JGD/dWBU3HF4lMe67jTa7OWrCtpKuZvnGwM//02YHcKS6GblhMCwfRSa6psjMRdLiCuH 2zwQ== X-Received: by 10.194.121.232 with SMTP id ln8mr2560670wjb.76.1443595184682; Tue, 29 Sep 2015 23:39:44 -0700 (PDT) Original-Received: by 10.194.34.35 with HTTP; Tue, 29 Sep 2015 23:39:44 -0700 (PDT) In-Reply-To: <2004212.koJWAIKy7V@fluss> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::230 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:12059 gmane.lisp.guile.devel:17877 Archived-At: --089e01227ec42ec1600520f1325e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2015-09-30 1:44 GMT+02:00 Arne Babenhauserheide : > Am Mittwoch, 30. September 2015, 01:02:50 schrieb Panicz Maciej Godek: > > 2015-09-29 22:05 GMT+02:00 Arne Babenhauserheide : > > > I wrote SRFI-119, not because I want Scheme to become more like > > > Python, but because I want it to *look* more like Python while > > > retaining its strengths. > > > If you asked me, I'd say that if people started using that SRFI (or the > two > > others), then it would be most harmful to the Scheme community, because > > that would increase code enthropy and force programmer to make an > > irrelevant choice. > > It=E2=80=99s no more irrelevant than the choice between Guile and Racket. No. Guile and Racket are both experiments. I think it was a good move on Racket's side that they proclaimed that they are a separate programming language, because that way they manage to avoid bad community pressures like this. > And different from that choice, it=E2=80=99s trivial to change: > > for i in *.w; do guile wisp.scm $i > $(basename $i .w).scm; done > > Converting strange syntax to Lisp is essentially what parsing does. Yet you loose a lot of support from your tools if you miss the assumptions that they were made upon. > > It also sacrifices some of the strengths of Scheme, actually, because i= t > > makes the code structure obscure. > > I disagree on that. The structure is still just as easy to recognize > as with parens: It is easy for you, because you're inveted it. For everyone else it's just another thing they'd need to learn in order to read the code. They'd need to remember all the assumptions you've made. > > The same goal could better be achieved (non-intrusively) by making an > easy > > to use editor that would allow to display your Scheme code in the way y= ou > > prefer, be it Python-style indentation or some fancy LaTeX formatting. > > I consider it as problematic when programming languages need strong > tool support to be easy to read. With the right tools, even Java is > nice to use. > > Raise your hands all those who don't use emacs to write their Lisp code. Raise your hands all those who don't use geiser to interact with Guile. I honestly think that, however clever Lisp is, it would be rather painful to edit it without proper tools. Even the aforementioned 'wisp.scm' is a tool. Regarding Java, I think its tools have the same problem the language has, i.e. everything is fine as long as you stick to the path that their developers chose for you. Changing indentation sensitive code needs some tool support to be > elegant, but that is available in most editors, but reading does > not. And I=E2=80=99ve been stuck in too many github diffs to consider tha= t as > a solved problem :) > This is the reason why emacs indents lisp code. This is the part of Norvig's comparison that I particularly like: "One of Python's controversial features, using indentation level rather than begin/end or braces, was driven by this philosophy: since there are no braces, there are no style wars over where to put the braces. Interestingly, Lisp has exactly the same philosphy on this point: everyone uses emacs to indent their code, so they don't argue over the indentation. Take a Lisp program, indent it properly, and delete the opening parens at the start of lines and their matching close parens, and you end up with something that looks rather like a Python program." > > Fine. But I don't find it disturbing that this "useful language with to= ns > > of great libraries" is called Racket or Guile, rather than Scheme. > > This week a Freenet user wrote a client to Freenet in Racket. I wanted > to use it for Guile, but since I didn=E2=80=99t really know the capacitie= s of > Racket, I didn=E2=80=99t know how to replicate them in Guile. I asked the= user > whether he/she could port to Guile and after a few days he/she > published a Guile version but stated that it did not work yet. One > hour of fixing later I had it running. > > Why I write that: For large projects it might be relatively easy to do > the conversion, because the compatibility layers are only a small part > of the total code base. The saved time by reusing existing code is > much larger than the time spent doing the compatibility stuff. For > small projects, it can be a blocker. You can=E2=80=99t spend a few days > waiting and 1 hour porting for programs which just take 4 hours to > write. Or rather: You can=E2=80=99t do that if you need to combine many s= mall > projects into a bigger whole. > > The same is true if you try to port e.g. PHP code to Guile, but then it only gets more difficult > > I will agree with you if you show me one example of successful deployme= nt > > of Guile or Racket. Like, Python has some impressive tools like Django = or > > Enaml. > > Can you give me clear criteria for when you would consider a > deployment as successful? > Well, that would be a little vague, but my first shot would be that it runs an app that makes money to anyone. > > > But someone has to actually do that: Creating libraries with > > > consistent style which provide to the application developer what > > > Scheme already provides to the language developer. > > > > > > > I agree. But from my experience, in order to make a useful library, it = is > > best to work on some real applications. > > I agree. > > > I think it is actually reasonable to think that the power of a > programming > > language manifests itself in the applications that are written in that > > language. > > I agree, too. > > So our viewpoints don=E2=80=99t seem to be that far away from each other = :) > > Cool :) --089e01227ec42ec1600520f1325e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

= 2015-09-30 1:44 GMT+02:00 Arne Babenhauserheide <arne_bab@web.de>:
Am Mittwoch, 30. September 2015, = 01:02:50 schrieb Panicz Maciej Godek:
> 2015-09-29 22:05 GMT+02:00 Arne Babenhauserheide <arne_bab@web.de>:
> > I wrote SRFI-119, not because I want Sche= me to become more like
> > Python, but because I want it to *look* more like Python while > > retaining its strengths.

> If you asked me, I'd say that if people started using that SRFI (o= r the two
> others), then it would be most harmful to the Scheme community, becaus= e
> that would increase code enthropy and force programmer to make an
> irrelevant choice.

It=E2=80=99s no more irrelevant than the choice between Guile and Ra= cket.

No. Guile and Racket are both experim= ents. I think it was a good move on Racket's side that they proclaimed = that they are a separate programming language, because that way they manage= to avoid bad community pressures like this.
=C2=A0
And=C2=A0different from that choice, it=E2=80=99s trivial to chan= ge:

=C2=A0 =C2=A0 for i in *.w; do guile wisp.scm $i > $(basename $i .w).scm= ; done


Converting str= ange syntax to Lisp is essentially what parsing does.
Yet you loo= se a lot of support from your tools if you miss the assumptions that they w= ere made upon.
=C2=A0
> It also sacrifices some of the strengths of Scheme, actually, because = it
> makes the code structure obscure.

I disagree on that. The structure is still just as easy to recognize=
as with parens:

It is easy for you, because= you're inveted it. For everyone else it's just another thing they&= #39;d need to learn in order to read the code. They'd need to remember = all the assumptions you've made.
=C2=A0
> The same goal could better be achieved (non-intrusively) by making an = easy
> to use editor that would allow to display your Scheme code in the way = you
> prefer, be it Python-style indentation or some fancy LaTeX formatting.=

I consider it as problematic when programming languages need strong<= br> tool support to be easy to read. With the right tools, even Java is
nice to use.


Raise your hands all those who don'= ;t use emacs to write their Lisp code.
Raise your hands all those= who don't use geiser to interact with Guile.

= I honestly think that, however clever Lisp is, it would be rather painful t= o edit it without proper tools. Even the aforementioned 'wisp.scm' = is a tool.

Regarding Java, I think its tools have = the same problem the language has, i.e. everything is fine as long as you s= tick to the path that their developers chose for you.

<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pa= dding-left:1ex"> Changing indentation sensitive code needs some tool support to be
elegant, but that is available in most editors, but reading does
not. And I=E2=80=99ve been stuck in too many github diffs to consider that = as
a solved problem :)

This is the reason = why emacs indents lisp code. This is the part of Norvig's comparison th= at I particularly like:

"One of Python's = controversial features, using indentation level rather than begin/end or br= aces, was driven by this philosophy: since there are no braces, there are n= o style wars over where to put the braces. Interestingly, Lisp has exactly = the same philosphy on this point: everyone uses emacs to indent their code,= so they don't argue over the indentation. Take a Lisp program, indent = it properly, and delete the opening parens at the start of lines and their = matching close parens, and you end up with something that looks rather like= a Python program."
=C2=A0
> Fine. But I don't find it disturbing that this "useful = language with tons
> of great libraries" is called Racket or Guile, rather than Scheme= .

This week a Freenet user wrote a client to Freenet in Racket. I want= ed
to use it for Guile, but since I didn=E2=80=99t really know the capacities = of
Racket, I didn=E2=80=99t know how to replicate them in Guile. I asked the u= ser
whether he/she could port to Guile and after a few days he/she
published a Guile version but stated that it did not work yet. One
hour of fixing later I had it running.

Why I write that: For large projects it might be relatively easy to do
the conversion, because the compatibility layers are only a small part
of the total code base. The saved time by reusing existing code is
much larger than the time spent doing the compatibility stuff. For
small projects, it can be a blocker. You can=E2=80=99t spend a few days
waiting and 1 hour porting for programs which just take 4 hours to
write. Or rather: You can=E2=80=99t do that if you need to combine many sma= ll
projects into a bigger whole.


The same is tr= ue if you try to port e.g. PHP code to Guile, but then it only gets more di= fficult
=C2=A0
> I will agree with you if you show me one example of successful deploym= ent
> of Guile or Racket. Like, Python has some impressive tools like Django= or
> Enaml.

Can you give me clear criteria for when you would consider a
deployment as successful?

Well, that wo= uld be a little vague, but my first shot would be that it runs an app that = makes money to anyone.
=C2=A0
> > But someone has to actually do that: Creating libraries with
> > consistent style which provide to the application developer what<= br> > > Scheme already provides to the language developer.
> >
>
> I agree. But from my experience, in order to make a useful library, it= is
> best to work on some real applications.

I agree.

> I think it is actually reasonable to think that the power of a program= ming
> language manifests itself in the applications that are written in that=
> language.

I agree, too.

So our viewpoints don=E2=80=99t seem to be that far away from each other :)=


Cool :)=C2=A0

--089e01227ec42ec1600520f1325e--