Profile picture
rntz @arntzenius
, 21 tweets, 6 min read Read on Twitter
1 like = 1 answer to this question.
1. Structural types - records, structural sums, equirecursive types, row/column polymorphism, structural subtyping, etc.

2. A common data interchange format that doesn't suck, whose schemas can be given by (1).
3. An easy, obvious way to handle *graphs*, not just *trees*, in functional languages.
4. The ability to interpret code into any category supporting the features it uses, a la Compiling to Categories. "Do-notation for lambdas and function application."
5. Relational algebra, aka finite sets and set comprehensions, everywhere.

5b. Why not throw in the whole Boom hierarchy while you're at it?

5c. And monotone fixed points, too. (cf. Datalog & Datafun)
6. Modal types. I think we're just starting to realize how to handle these in a general way. See among others "A Fibrational Framework..." & "Context Constrained Computing",

dlicata.web.wesleyan.edu/pubs/lsr17mult…
bentnib.org/context-constr…
7. Macros & types that work together. In this vein, Turnstile & Hackett look interesting:

ccs.neu.edu/home/stchang/p…
lexi-lambda.github.io/hackett/
8. Automatic incremental computation everywhere. I wish Self-Adjusting Computation were more widespread. I'm not sure SAC is the One True Way, though.
9. Making realtime cooperation between interactive programs easy. @dynamicland1 does this, among other things. @leastfixedpoint's Syndicate also seems super cool. Both draw on the old idea of tuple-spaces.
10. Structural editing. I can no longer imagine editing Lisp or Scheme without paredit. I want that power elsewhere, too! Hazel is a very cool research effort in this area: hazel.org
11. Laziness and eagerness, in one language, without privileging one over the other. Call-by-Push-Value and related work seem to be getting at the heart of this issue.
12. Copatterns! Agda & Idris have 'em, but they could be better (e.g. Agda lacks copattern synonyms, not sure about Idris). Not many other langs have them at all.

github.com/idris-lang/Idr…
agda.readthedocs.io/en/v2.5.4/lang…
Oh wow, the number of likes more than doubled while I wasn't looking. I'll, uh, get back to this tomorrow, folks. G'night! :)
Ok, let's get this started again. Not sure I can keep up with demand, but I can try.

13. Staging and/or partial evaluation. Futamura projections are a hella cool idea that's never really been made practical to my knowledge - can it be practical now? pretty please?
14. A unification of static types, contracts/runtime type-checking, and parsing/grammars - maybe even test-case generation, too! Racket's contracts, Typed Racket, & clojure's core.spec are in this area, but don't seem like the final word.
15. Language-level support for data structures containing names with lexical binding and substitution. Binding structure is a pain and there are umpteen ways to do it; I want not to have to think about it.
16. Type errors that provide examples, concretely showing how your ill-typed program might try to do something nonsensical. See "Dynamic Witnesses for Static Type Errors", arxiv.org/abs/1606.07557
17. Automatic ("orthogonal") persistence everywhere. "Saving" is an anachronism. Quitting/restarting should be a last resort when you manage to bug a program out. emacs --daemon is a half-assed version of this, and it's so good.
18. Defining sublanguages that are open to syntax extensions. Macros extend expression syntax; but not everything is an expression (rntz.net/post/2016-06-0…). @lexi_lambda has a nice blog post on doing this in Racket, but it's nontrivial: lexi-lambda.github.io/blog/2018/04/1…
See also the "polysemy" library; the same name might want distinct meanings in distinct sublanguages: docs.racket-lang.org/polysemy/index…

IMO Lisp-2 is a bad idea b/c it separates functions from values, which really belong together. But values, patterns, and types? Those are more distinct!
19. Or are they? What if patterns were first-class values? There's been a bunch of work on "pattern calculus" that I haven't fully grokked yet. But "making things first-class" has a long history of producing interesting results.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to rntz
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!