Questions tagged [language-design]
70 questions
32
votes
8 answers
Why is the object destructor paradigm in garbage collected languages pervasively absent?
Looking for insight into decisions around garbage collected language design. Perhaps a language expert could enlighten me? I come from a C++ background, so this area is baffling to me.
It seems nearly all modern garbage collected languages with OOPy…
dbcb
- 423
- 4
- 7
25
votes
3 answers
Visual programming tools, why don’t they work with the AST directly?
I've found several open source visual programing tools like Blockly and friends, and other projects hosted at Github, but could't find any that work directly with the abstract syntax tree.
Why is that?
I'm asking because once I discovered that every…
ery245gs
- 353
- 3
- 6
24
votes
0 answers
Can a calculus have incremental copying and closed scopes?
A few days ago, I proposed the Abstract Calculus, a minimal untyped language that is very similar to the Lambda Calculus, except for the main difference that substitutions are O(1) (i.e., variables only occur once) and copying is an explicit,…
MaiaVictor
- 4,199
- 2
- 18
- 34
11
votes
4 answers
Does it make sense to have both the concept of 'null' and 'Maybe'?
While creating a client for a web API in C#, I ran into a problem regarding null as a value where it would represent two different things:
nothing, e.g. a foo may or may not have a bar
unknown: by default the API response only includes a subset of…
Stijn
- 213
- 1
- 8
11
votes
1 answer
Types as first class Citizen
Coming from a C++ background I don't understand why one needs types / type expressions as first class citizen?
The only language I know that supports this feature is Aldor.
Does anybody have some literature about types as first class citizen or know…
paul98
- 113
- 5
11
votes
3 answers
Automatic Downcasting by Inferring the Type
In java, you must explicitly cast in order to downcast a variable
public class Fruit{} // parent class
public class Apple extends Fruit{} // child class
public static void main(String args[]) {
// An implicit upcast
Fruit parent = new…
Sam Washburn
- 215
- 1
- 7
9
votes
3 answers
Why are strings immutable in some languages?
String is an immutable class in Java. An immutable class is simply a class whose instances cannot be modified. Why does the Java programming language choose to make objects of class String immutable?
Tupledev
- 91
- 3
8
votes
2 answers
What would a language look like in which precise GC was implementable as a library?
Suppose you have some programming language with manual memory management. What features does this language need to have in order to be able to implement precise garbage collection as a library, and not as a fundamental language construct?
By a…
Daniel Shapero
- 262
- 1
- 11
8
votes
3 answers
How did it happen that Algol 60 was an improvement on its successors?
The original statement referred to by this question is:
The more I ponder the principles of language design, and the techniques which put them into practice, the more is my amazement and admiration of ALGOL 60. Here is a language so far ahead of…
Thomas Klimpel
- 5,440
- 29
- 69
8
votes
2 answers
How to bridge theory and implementation for while loops?
I'm working on my own little programming language for educational purposes, and I've run into a little bit of a problem. There are a few different solutions for it, but all of them seem inelegant - and from what I understand, unnecessary. But…
Telastyn
- 509
- 2
- 10
6
votes
1 answer
Lazy concatenative functional language
Can the idea of concatenative programming languages be extended to call-by-need evaluation strategy?
I see some problems that I will explain with few examples. I will use a prefix instead of a postfix notation, so evaluation takes place from left to…
user3368561
- 485
- 3
- 9
6
votes
1 answer
Safe way to explicitly define new types instead of using Algebraic data types for my functional language
Question:
As I'm working on a Hindley-Milner typed lambda calculus, in order to make it usable I need to add some types such as list and pairs. The way I currently do it is, I have an unsafe keyword that lets me explicitly set the type of a global…
Juan
- 755
- 4
- 16
5
votes
2 answers
Why don't imperative languages like C or Go support Haskell-like parametric polymorphism?
Why don't imperative languages support parametric polymorphism as powerful as whats in Haskell and OCaml?
More specifically if I call a function foo(x) that internally calls bar(x) which internally calls baz(x), what prevents the type of parameter x…
hgs3
- 283
- 1
- 9
5
votes
1 answer
Examples of context sensitive syntactic constructs (statements)
So, I am implementing a context sensitive syntactic analyzator. It's kind of an experimantal thing and one of the things I need are usable syntactical contructs to test it on.
For example, the following example isn't possible to parse using standard…
tedd
- 53
- 2
5
votes
2 answers
What is the point of delimiters and whitespace handling
I see that language specifies reserved words, delimiters and whitespaces in the lexer section. Are delimiters just like reserved identifiers in the punctuation space or they have additioinal function regarding skipping the whitespace?
Namely, spec…
Valentin Tihomirov
- 1
- 10