3 ms·
> Then nothing is modern in the programming language world, This does not really follow what I quoted. I'd also say that 'modern' may have some context depende
by lispm 9y ago
> Then nothing is modern in the programming language world,
This does not really follow what I quoted. I'd also say that 'modern' may have some context dependency, but selling 40 year old stuff in the context of Lisp as 'modern' will not do it.
I would for example consider the specific support of multi-methods in Julia as 'modern' and interesting. This would allow me to use CLOS like programming constructs in areas where high-performance is wanted.
> The Scheme "core language" is right here [1].
Does Guile implement R7RS small? The manual claims it does not implement the latest version...
> Anything beyond r7rs-simple, is just a library.
R7RS small is too small and for anything else there are multiple libraries with overlapping functionality. I'm also not a big fan of splitting up a language into tiny libraries.
If one removes the overlapping stuff from the Guile manual, I'd guess that 50% had to go and some of the rest needs to be redesigned and better integrated. Then it would still not be 'modern', but at least cleaner.
- shakna 9y agoGuile has multiple dispatch as part of GOOPS. [0] (define-method (+ (x <string>) (y <string)) ...) (define-method (+ (x <matrix>) (y <matrix>)) ...) (define-method (+ (f <fish>) (b <bicycle>)) ...) (define-method (+ (a <foo>) (b <bar>) (c <baz>)) ...) > R7RS small is too small and for anything else there are multiple libraries with overlapping functionality. The point of r7rs-large is to eliminate overlap. As to *-small being... Too small... R5RS is still quite popular, and quite small, whilst still being quite capable. However, Guile does not implement the whole of R7RS, yet. Instead they've implemented both R5RS and R6RS, for backwards compatibility, which is where you're seeing the overlap. When R7RS is a fully fleshed out spec, Guile intends to implement it, as well. [0] https://www.gnu.org/software/guile/manual/html_node/Methods-and-Generic-Functions.html#Methods-and-Generic-Functions https://www.gnu.org/software/guile/manual/html_node/Methods-...
- lispm 9y ago> Guile has multiple dispatch as part of GOOPS A feature which is 30 years old. What I was referring to is how multi-methods SPECIFICALLY are designed & implemented in Julia, not multi-methods as such. The Julia implementation of multi-methods looks 'modern' in the context of Lisp.
- shakna 9y ago> designed & implemented in Julia Scheme specifically doesn't specify how something should be implemented, just the result. > The Julia implementation of multi-methods looks 'modern' in the context of Lisp. Does it? Guile's methods are generic functions, like in CLOS, and get JIT'd like with Julia. And the dispatch, being based on the given arguments, rather than the given object, is identical. If no qualifier is given for an argument, Guile treats it similarly to Julia's Any. Julia and Guile eliminate runtime-dispatch in a similar way.
- lispm 9y ago> Scheme specifically doesn't specify how something should be implemented, just the result. Then people implement it. Developers then choose the implementation based on the capabilities of those. > Guile's methods are generic functions, like in CLOS, and get JIT'd like with Julia Julia uses generic functions throughout and it has a JIT. Guile uses Goops almost nowhere and a JIT is not released. If one would remove Goops from Guile, would anyone notice? That's what the manual shows: a collection of unrelated/unused features.
- shakna 9y agoI've adapted to your (unusual) definitions. I asked what you would wish to see, and then provided it. I've teased details out of your sentences that are more implication than statement. You're constantly shifting the bar for what would answer the original question, "Is Guile a modern Scheme?" I'm bored of it. So, I'll spell out a few more things, and then you can happily say you've won the argument. > Then people implement it. Developers then choose the implementation based on the capabilities of those. I said the Scheme specification was modern. This seems irrelevant to that statement. If it's about Guile instead, the details are available, though it doesn't seem that you have read them. > Julia uses generic functions throughout and it has a JIT. Guile uses Goops almost nowhere and a JIT is not released. Patently false. Guile has had a JIT since 2.0.0. [0][1] I should note that was in 2011, six years ago. > If one would remove Goops from Guile, would anyone notice? If I were to remove pattern matching from Clojure would anyone notice? Now allow me to complain that usage somehow is equivalent to integration. > That's what the manual shows: a collection of unrelated/unused features. Let me quote someone else from this thread: > ...The Common Lisp spec is quite a bit more modern than 1958 ... it's a well-crafted ANSI standard. It does suffer from backwards-compatibility... [2] Seems Common Lisp also has that problem... And you don't have a problem with it. [0] http://lists.gnu.org/archive/html/guile-devel/2011-02/msg00173.html http://lists.gnu.org/archive/html/guile-devel/2011-02/msg001... [1] https://github.com/noahl/guile-jit https://github.com/noahl/guile-jit [2] https://news.ycombinator.com/item?id=15281652 https://news.ycombinator.com/item?id=15281652