Re: Request for feedback on SRFI-126

2015-09-28 Thread Taylan Ulrich Bayırlı/Kammer
Panicz Maciej Godek  writes:

> Even more broadly than the summaries I already gave, I could say:
> I would like us to reach a state where one can think "I need to
> write application X? Let's do it in Scheme since it's such a neat
> language," and then proceed to install standard Scheme libraries
> A, B, and C into my system either with the distro's package
> manager or a Scheme package manager (written in standard Scheme,
> working with my favorite implementation), proceed to write my
> application in standard Scheme using those libraries, and have
> this application X using libraries A, B, and C work across Guile,
> Racket, Chicken, Gauche, Kawa, and what have you, without having
> to change a single line of code.
>
> Maybe you should explain why there are so many implementations of
> Scheme in the first place? (That isn't the case for Python, Java or
> Perl)

Because it's too easy to make a standards-compliant implementation
because the standards ask for too little from compliant implementations.
And/or other reasons; don't really know your intent with the question.

> [...]
>
> That's the Grand Dream, but I don't even think it's *that* far
> away:
>
> Had I such a "Grand Dream", I'd go with Python, because they already
> have that.

Python still lacks many of Scheme's greatest features. :-)

> Scheme has very different traits, and very different purpose. The
> position of Python stems from its particular notion of elegance, which
> -- although isn't as extreme as Scheme's -- is easier to grasp to the
> masses. This especially regards syntax. Python has a very intuitive
> syntax for its basic notions (including dictionaries). Lisp has "all
> those hairy parentheses", which apparently very few people can
> appreciate, although they help to work with the code greatly, allowing
> to see beyond language's limitations.

S-expression syntax, allowing things like Paredit, is one of Scheme's
many virtues over other languages.  So I would like to use Scheme, not
Python.  Currently I can't.  (I can use Guile, but it still misses some
"batteries.")

> I find it daunting that it took us 106 whopping SRFIs to reach a
> *basic* socket API! Scheme could have been taking over the world
> by now. : -)
>
> Not sure what you mean by "taking over the world". That there will be
> many people using it? There won't. That there will be important
> systems based on it? Don't think so.

Why not?

> Scheme's power to change the world doesn't stem from standardized
> APIs, but (hopefully) from SICP and the way it affects thinking about
> computer systems.

Why even bother with something like Guile if the only worth of Scheme
were pedagogical?

> And as amazing as it would be if that huge pool of libraries
> existed specifically as Guile modules, I'm not sure if it's
> realistic.
>
> Somehow I can't get amazed with that vision.
> The best thing that Scheme does for programming is that it promotes
> writing software that can be read, and not only executed. What you
> claim to be essential here seems to be a rather minor detail from that
> point of view.

Libraries *are* software.  Currently people *don't* write any of that
"software that can be read" except in small groups.

> Python lacks many of Scheme's greatest features.
>
> The advantage of which rarely manifests in everyday practice,
> especially if you're not used to working with s-expressions (most
> programmers I know haven't got a clue what those are).
> I recommend that you read this:
> http://norvig.com/python-lisp.html

I'm wondering more and more why you use Scheme if you think it has no
advantages over Python.

> > "Better" by which standards?
>
> By the above explained standards. Maybe the pool of libraries is
> more important than flow of users, but still, if a Racket user can
> install Guile and immediately feel somewhat at home because all
> standard Scheme parts are still there, that could gain us a lot.
>
> I sometimes use Racket to teach people to program in Scheme. That's
> because it's cross-platform and comes with a GUI that anyone can
> comprehend quickly. It is terribly inconvinient compared to emacs, but
> most people are unable to get through the basics of emacs. And here's
> where the revolution stops.

I was talking about programmers using Racket to write software, not
students using Racket to learn computer science.

> A good standard can be in line with lots of different values I
> think.  And the (lack of) standardization currently works as a
> "wall" that makes the flow of users simply nigh impossible (have
> to rewrite most of one's code for to work on another
> implementation), so a good standard would mean abolishing that
> wall, even if people won't immediately want to cross the now open
> boundaries. It abolishes a fundamental limitation.
>
> I shouldn't think so. I was once porting a fairly advanced Guile
> appl

Re: Request for feedback on SRFI-126

2015-09-28 Thread A0


On 28/09/15 00:20, Panicz Maciej Godek wrote:
> Delimited continuations are an academic curiosity, and sockets and
> regexps are just a specific domain (I'm sure you could easily find
> plenty of others; anyway, they are by no means fundamental)


Sorry, but I have to comment on this. So did people think of lambdas,
map, reduce and the rest
of list/array collective manipulation procedures, but look at the new
Java/C++ et al standards. It just
so happened that they have implemented them decades after they
achieved their normal use
in languages like Lisp and Scheme. I wonder when we'll finally get
tail calls and named lets  in the
mainstream languages :).

I fully understand Taylan's point of view. Scheme has more expressive
power than any other dynamic
language I have encountered. I am trying to use it for day-to-day
tasks which used to be difficult
only because the batteries were not included. Maybe for you it's a
nice little language to demo great
coding ideas, but it can be a practical platform as Guile
demonstrates. Unfortunately for the novice programmers
the practicality of Guile only becomes clear after one can use its
nifty FFI to patch up the
still unimplemented features.

In a sense, I don't think it is so necessary to have a practical
Scheme standard as long as there is at
least one implementation that can be used to perform with ease 90% of
tasks a modern programmer needs to
tackle. And, yeah, I'd love to see the core scheme kept clean.

All the best...



Re: Request for feedback on SRFI-126

2015-09-28 Thread Marko Rauhamaa
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer"):

> So we are back to square one: anyone who wants to use Scheme for
> something real needs to pick a specific implementation,

Which is true for other programming languages as well: C, C++, Python,
..

For me, in practice, C/C++ is gcc, Python is CPython, sh is bash, Scheme
is Guile, and the OS is Linux.


Marko



Re: Request for feedback on SRFI-126

2015-09-28 Thread Taylan Ulrich Bayırlı/Kammer
Marko Rauhamaa  writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer"):
>
>> So we are back to square one: anyone who wants to use Scheme for
>> something real needs to pick a specific implementation,
>
> Which is true for other programming languages as well: C, C++, Python,
> ..
>
> For me, in practice, C/C++ is gcc, Python is CPython, sh is bash, Scheme
> is Guile, and the OS is Linux.

Unfortunately, Scheme is also Racket, Chicken, Kawa, Gambit, Gauche,
Chibi, and so on.  Racket individually has considerable power so they
would benefit the least from this, but a bridge between the user-bases
of the others would probably have significant benefits to all of them.
(And I suppose Racket would eventually support such an RnRS too; why not
if they support even ALGOL.)

Knowing that one doesn't have to choose and stick to an implementation
would also make Scheme as a whole more attractive.  Many people first
hear of just "Scheme" and not immediately "Guile," then they see that
one can't do anything serious with "Scheme" (standard), and the image
stains every Scheme implementation.

Guile could make a bold move like Racket and say that it's not Scheme
anymore, not caring about further RnRS at all, but I'm not sure if it
would be a good move with Guile's current stand-alone popularity.

(I hope that doesn't sound negative.  Of course I'd *love* Guile to
become for Scheme what GCC is for C, but I don't see that becoming the
case any time soon.  Racket is nearer to that, though they don't even
call themselves Scheme.)

Taylan



Re: Request for feedback on SRFI-126

2015-09-28 Thread Christopher Allan Webber
Taylan Ulrich Bayırlı/Kammer writes:

> I will probably work on a delimited continuations SRFI, heavily inspired
> by Guile's call-with-prompt, since I find it *immensely* more easy to
> grok than shift/reset and prompt/control because those mingle together
> the "stack slice" and the "handler" code whereas call-with-prompt
> clearly separates them.

This could be interesting!  I wonder how hard it will be to do?  IIRC
from reading wingolog, delimited continuations need to be planned in at
a pretty low level, and I wonder how hard it will be for many
implementations to bring them in who don't have them at present?  Will
be interesting to see!

Anyway, interesting to hear, good luck!
 - Chris



Re: Request for feedback on SRFI-126

2015-09-28 Thread Taylan Ulrich Bayırlı/Kammer
Christopher Allan Webber  writes:

> Taylan Ulrich Bayırlı/Kammer writes:
>
>> I will probably work on a delimited continuations SRFI, heavily inspired
>> by Guile's call-with-prompt, since I find it *immensely* more easy to
>> grok than shift/reset and prompt/control because those mingle together
>> the "stack slice" and the "handler" code whereas call-with-prompt
>> clearly separates them.
>
> This could be interesting!  I wonder how hard it will be to do?  IIRC
> from reading wingolog, delimited continuations need to be planned in at
> a pretty low level, and I wonder how hard it will be for many
> implementations to bring them in who don't have them at present?  Will
> be interesting to see!
>
> Anyway, interesting to hear, good luck!

Thanks for the encouragement!

Yeah, AFAIUI delimited continuations are a very fundamental feature.
They can't really be implemented in call/cc for instance, as some people
used to claim I think.

(And that's why they need to be part of the language, as I see it; if
the language itself doesn't have them, there's no way to have them, and
no way to implement all the things they make possible on a higher
level.)

Of course it might be useful not to entirely turn one's back against
implementations that have a difficulty with that feature (it's pretty
new compared to some other Scheme features AFAIK, and going fairly deep
into the implementation), so it could be left optional, but sanctioned
as the official API for implementations to support, if they support it
in any way at all.  Like SRFI-106 does for sockets.

Taylan



Re: Request for feedback on SRFI-126

2015-09-28 Thread Panicz Maciej Godek
2015-09-28 10:13 GMT+02:00 Taylan Ulrich Bayırlı/Kammer <
taylanbayi...@gmail.com>:

> Panicz Maciej Godek  writes:
> >
> > Maybe you should explain why there are so many implementations of
> > Scheme in the first place? (That isn't the case for Python, Java or
> > Perl)
>
> Because it's too easy to make a standards-compliant implementation
> because the standards ask for too little from compliant implementations.
> And/or other reasons; don't really know your intent with the question.
>

Because Scheme is constructed by removing unnecesary features, rather than
by adding them.

> [...]
> >
> > That's the Grand Dream, but I don't even think it's *that* far
> > away:
> >
> > Had I such a "Grand Dream", I'd go with Python, because they already
> > have that.
>
> Python still lacks many of Scheme's greatest features. :-)
>

The MIT course 6.01 that replaces SICP introduces a language Spy, which is
a mixture of Python and Scheme. Might be worth checking out, although I
don't really think so. Anyway, if anyone's interested, it can be found here:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-2011/Syllabus/MIT6_01SCS11_notes.pdf
(page 89)


>
> > Scheme has very different traits, and very different purpose. The
> > position of Python stems from its particular notion of elegance, which
> > -- although isn't as extreme as Scheme's -- is easier to grasp to the
> > masses. This especially regards syntax. Python has a very intuitive
> > syntax for its basic notions (including dictionaries). Lisp has "all
> > those hairy parentheses", which apparently very few people can
> > appreciate, although they help to work with the code greatly, allowing
> > to see beyond language's limitations.
>
> S-expression syntax, allowing things like Paredit, is one of Scheme's
> many virtues over other languages.  So I would like to use Scheme, not
> Python.  Currently I can't.  (I can use Guile, but it still misses some
> "batteries.")
>
> > I find it daunting that it took us 106 whopping SRFIs to reach a
> > *basic* socket API! Scheme could have been taking over the world
> > by now. : -)
> >
> > Not sure what you mean by "taking over the world". That there will be
> > many people using it? There won't. That there will be important
> > systems based on it? Don't think so.
>
> Why not?
>

Because no one does them.

> Scheme's power to change the world doesn't stem from standardized
> > APIs, but (hopefully) from SICP and the way it affects thinking about
> > computer systems.
>
> Why even bother with something like Guile if the only worth of Scheme
> were pedagogical?
>

No. I never said it's the only worth.
I find Guile very practical and convinient tool, despite its flaws.


> > And as amazing as it would be if that huge pool of libraries
> > existed specifically as Guile modules, I'm not sure if it's
> > realistic.
> >
> > Somehow I can't get amazed with that vision.
> > The best thing that Scheme does for programming is that it promotes
> > writing software that can be read, and not only executed. What you
> > claim to be essential here seems to be a rather minor detail from that
> > point of view.
>
> Libraries *are* software.  Currently people *don't* write any of that
> "software that can be read" except in small groups.
>

Small groups are a good start, I guess.

> Python lacks many of Scheme's greatest features.
> >
> > The advantage of which rarely manifests in everyday practice,
> > especially if you're not used to working with s-expressions (most
> > programmers I know haven't got a clue what those are).
> > I recommend that you read this:
> > http://norvig.com/python-lisp.html
>
> I'm wondering more and more why you use Scheme if you think it has no
> advantages over Python.
>

I don't think so, and I never said that. Python has some inherent
limitations that Scheme manages to avoid, because it isn't over-specified.
I gave that link because it comes from one of the greatest Lisp advocates
-- and yet he claims that "Some just couldn't get used to Lisp syntax in
the limited amount of class time they had to devote to it", and also
"Although some people have initial resistance to the [Python's indentation
as block structure]/(Lisp parentheses), most come to [like]/(deeply
appreciate) them."

Even within the Scheme community there appear voices complaining on the
Lisp syntax, like SRFI-105, SRFI-110 or SRFI-119.

> If I can't *rely* on the constant-time factor, that's useless. If
> > it's reliable, then you specified something effectively equivalent
> > to a hash table API.
> >
> > Sure. The only difference is the cognitive overhead. If you could use
> > plain "cons" for constructing hash tables and vectors, that would be a
> > big win, because you would remove another weakness and restriction
> > that makes this additional feature of yours necessary.
>
> How can one implement s

[ANN] gzochi project development release 0.9

2015-09-28 Thread Julian Graham
Hi everyone,

I'm pleased to announce the ninth development release of the gzochi game
development framework.

The project description, from Savannah: gzochi (/zoʊ-tʃiː/) is a framework
for developing massively multiplayer online games. A server container
provides services to deployed games, which are written in Guile Scheme,
that abstract and simplify some of the most challenging and error-prone
aspects of online game development: Concurrency, data persistence, and
network communications. A very thin client library can be embedded to
provide connectivity for client applications written in any language.

This release is focused on quality and stability; dozens of memory leaks
and functional defects have been resolved, and the server can more reliably
handle a large volume of messages and connected clients. In addition to
that, the release includes a handful of new features:

* The distribution now ships with a suite of performance benchmarks for
gzochid, the gzochi server container

* New statistics about message transmission are published to the web
administrative console

* ...and more! See the NEWS files in the distribution for details

This is a development release; the framework is likely not bug-free.
Nonetheless, there's extensive server and client documentation, and the
distribution includes three example games with heavily-annotated source
code. For more information, visit the web site at
http://www.nongnu.org/gzochi/ or check out the project page on Savannah, at
http://savannah.nongnu.org/projects/gzochi/ -- you can pick up the release
from the downloads section.


Regards,
Julian