<@UCUSW7WVD> (branching my thread from <#CC2JRGVL...
# thinking-together
d
@Kartik Agaram (branching my thread from #CC2JRGVLK) Can you offer examples of "existing languages [being] highly constrained in their degrees of freedom"? I usually find human language alone inadequate to discuss these matters, so I need to see specific examples. But yeah, we need to see programming language design itself as a multi-layered thing; indeed I see my task as helping to architect an entire ecosystem of languages. Decomposing a compiler and its standard libraries into many parts is insufficient, because you're still viewing it as one language (really two languages, the language being compiled and the implementation language - the implementation language shouldn't be that important, but without interoperability, it is). It's wasteful to design a new standard library for every new language, wasteful not to share common parts between languages, and in addition I think a big reason interoperability is hard is because we haven't learned how to share these things. (Interestingly, I hold to a "waste not, want not" philosophy in everyday life, as in PL design.) I created LES and Loyc trees in that spirit. Because they are so general, they have disadvantages as syntax trees - they are not specialized for your specific circumstances and aren't suitable in all situations.* Yet because it was designed for all programming languages, it avoids common impedance-mismatches - for example e.g. most languages disagree about what "identifiers" and "literals" are, but LESv3 says "anything goes" so it is naturally compatible with everything. I think every compiler could find a use for these without the usual impedence mismatches you'd usually suffer when crossing language boundaries. Regardless of the syntax or semantics of your language, you can use LES as a text format to express internal compiler data structures, or accept it as an input format so users can combine your language with preprocessors like LeMP. (* Note that you could, though, generate wrapper types to wrap Loyc trees in a language-specific manner, or implement an interface like ILNode so that although your syntax trees aren't Loyc trees, they can be consumed as if they were.)
❤️ 2
w
How does your particular decomposition of the compiler compare to other approaches like Roslyn? https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
k
This thread needs a link to your Loyc project: http://loyc.net Also one to your intro thread: https://futureofcoding.slack.com/archives/CC2JRGVLK/p1550368121006600