These are the features I'd like to see for Myst 0.5.0 (ideally releasing 2018-02-28). This list will be updated as new ideas and suggestions come in.
- Make
IO
a Type rather than a Module. - Consider adding Type inheritance (see #142).
- Work on a protocol/implementation system.
- Improve
Spec
to provide better failure output and continue execution after a failure (see #139, #140, #141). - Work on a soft matching construct (see #96)
- Re-implement
File
on top ofIO
. - Implement
Socket
on top ofIO
. - Standardize error structures in the Native Library (see #103).
These are features that have come up and had some initial discussion, but are either incomplete or would be difficult to implement in the release timeline for 0.5.0.
- Add ability to mark function parameters as
const
. This would require "type finalization" to emulate static dispatch at runtime and enable analysis of function calls.const
would be added as a type restriction modifier, and would cause an error if the value would be modified anywhere within a function (either by assignment or mutation from another function). An initial example might look like this:
# This function would cause an error, as `a` is being re-assigned within the function.
def increment(a : const Integer)
a += 1
end
# This function would also fail, because `list` is mutated by the `push` function.
def append(list : const List, value)
list.push(value)
end
# This function would succeed, because neither `a` nor `b` are mutated.
def add(a : const Integer, b : const Integer)
a + b
end