Live data from Hacker News

Modern Language Wishlist

lispcast.com

71–75 of 75 posts

Re: Modern Language Wishlist

#71
Here's one he missed: a good package manager.

Yes, I realize that's not technically an aspect of a language, in the purest sense. Yes, I realize that this is something that the community can provide. However, I will argue that any new language that neglects to ship a package manager alongside the language implementation is doing a disservice to its users.

Go (goinstall) and Rust (cargo) had the right idea.

Re: Modern Language Wishlist

#72
post #35

Earlier quoted context omitted.

This doesn't sound like Go to me, but I've never used it: Homoiconic Code can be manipulated as data. Extensible syntax I find I don't use macros much anymore. I do more with data-oriented programming. But it is nice to have when you need it.

A lot of this list sounds very much like Postscript: * Code is stored in an array with the execute flag turned on. Therefore functions can be easily edited (or assembled) as data. First class functions all the way. * The environment is a dictionary (associative array), which can be swapped with another dictionary at any time (not just at function entry points). * Garbage collection is standard I was thinking that it…

Maybe Factor http://factorcode.org/ is what you want ?

Also, the rather new Red language (Rebol-like) http://www.red-lang.org/ seems interesting.

Re: Modern Language Wishlist

#73
post #51
post #48

Yet, no mention of concurrency/parallelism primitives. sigh

Good idea. But they do kind of fall under a "model of time."

In fact, the article does mention concurrency in there. I must have read over that thinking right away that they meant UTC/ Time Zone issues again. d'oh!

Re: Modern Language Wishlist

#74
post #37

Earlier quoted context omitted.

Actually, from a math perspective, it's kind of nonsensical to talk about type conversion at all. That is, 3, 3.0, and 3/1 are purely notational differences, and all three represent exactly the same object. Since math is theoretically infinite precision, the way you write a number has no impact on the way operations like division act on it, making whether it belongs to Z, or just Q or R a moot point. Now, if you rest…

Kind of. But you might say that rational numbers are ordered pairs of integers and positive integers, real numbers are Cauchy sequences of rationals, and complex numbers are ordered pairs of real numbers, and the real number 3 can't be added to (2+i) without converting it to a complex number first.

A nice thing about John Conway's construction of the Surreal numbers is that integers are really a subset of the rationals, which are really a subset of the reals, which are really a subset of the surreals. I find this much more elegant than having "merely" finding an embedding of the smaller structure inside the larger one.

Re: Modern Language Wishlist

#75
post #67
post #65

Earlier quoted context omitted.

I don't think that he was talking about Racket, but some of your points are mistaken. You might not like the literal syntax for maps in Racket, but it certainly exists. Typed Racket has lots of math-oriented types; we just wrote a paper about their design here: http://www.ccs.neu.edu/racket/pubs/padl12-stff.pdf Comprehensions such as for/list and for/hash are polymorphic, in that they operate on arbitrary sequences,…

You're completely right on the math. I had math-oriented types wrong; I assumed that the author wanted the ability to say, "This type is restricted to values defined by this set," which he didn't. Even if he did, I see that Typed Racket actually does support such types, which is awesome. So I'm completely wrong. Whether e.g. #hash((key . value) (key . value)) counts as a literal hash syntax is interesting. If you wan…

I don't think that's right about hash tables. In particular, the distinction I would make is that literal hash tables are part of the syntax of the language in Racket, like in Clojure, Python, etc, and not in C# or C. What this means in Racket is that (read (open-input-string "#hash()")) produces a hash table -- that's parsing, not running the hash table constructor.
Post reply on HN