What I would love to see in programming.
On Tue, 04 Apr 2084, by @lucasdicioccio, 167 words, 1 code snippets, 3 links, 0images.
This article is still considered unfinished and content may change significantly.
type computations
- quantifiers
- poking holes (refactoring)
- if a block of code has a missing value, add it to the type
- poking holes (fixpoint) - alter a recursive binding to make it functorial
- modules
- poking holes at the module level
- understanding of evolution of code
- define a new struct as an evolution
- distinction between
- mainly data records (no default allowed)
- mainly control-flow records (no default pattern allowed)
record = open "record"
primitives = open "primitives"
base = open "basics"
user = record/product (
record/sum (
A
B
C
) as "user rank"
primitives/int as "age"
base/maybe user as "parent"
)
advanced = open "advance"
rec-user = advanced/poke-fix-rec
automated reasoning
- resource linearity
- IO (side-effects) and Co-IO (pre-conditions)
syntactic
mostly define, syntaxes have semantics implications of course, here i classify things that make the language look good
- parametric modules (e.g., foo = import “foo.pkg” [ params ])
- patterns and co-patterns (i.e., matching both sides)
- sum and product types
- generically derive scott encodings (data A = X1 Int | X2 String) => forall r => (Int -> r) -> (String -> r) -> (A -> r) with something like
handler(A)
- generically derive scott encodings (data A = X1 Int | X2 String) => forall r => (Int -> r) -> (String -> r) -> (A -> r) with something like