Make variables a subset of functions
Closed this issue · 1 comments
TropicSapling commented
macro func let (var) = (val) {
return func var {
val
};
}
let var = 123;
// becomes:
func var {
123
}
How would data types work this way? Possible solution; arg pattern matching:
macro func let (T var) = (val) {
return func var {
(T) val
};
}
macro func let (var) = (val) {
return func var {
val
};
}
macro func (T var) = (val) {
return let T var = val;
}
macro func (var) = (val) {
return let var = val;
}
let My Special Type var = 123;
My Special Type var = 123;
// both become:
func var -> My Special Type {
(My Special Type) 123
}
let var = 123;
var = 123;
// both become:
func var {
123
}
Issue with this: Variables become kind of immutable since functions are. Also, you can't really create functions at runtime like you can with variables.
TropicSapling commented
Variables are now a subset of patterns, and I'm pretty sure I'm keeping it that way, so closing this.