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)

links