Skip to content

Latest commit

 

History

History
184 lines (184 loc) · 6.05 KB

TODO.md

File metadata and controls

184 lines (184 loc) · 6.05 KB
  • Something about sno executable/snow white that came to me in a dream

Specification

  • Grammar
  • Types &c.
    • Right now tc doesn't even work lol
  • Modules (inclusions lol)
  • Normalization

Documentation

  • manpages
    • Document shebang trick
  • :flatten
  • :pick
  • let-bindings
    • Explain difference between :let and :bind
  • Tutorial/walkthrough?
    • Getting started?
  • User guide (see happy?)
    • Lints and such
    • Bibliography
    • Or-patterns
      • Declension example?
    • Matching
  • Library documentation

Examples

Editor Integration

  • Syntastic checker

Passes

  • Typechecker?
  • Warn if a string is duplicate? (warn on duplicate branches)
  • Make sure there are no top-level name clashes
  • Scoping check (not lazy, like evaluation)
  • Error on negative numbers? (useful error)
  • Warn on or-patterns containing wildcards at the highest level

Library API

  • Maybe spin out internal library?

Bugs

  • Completions hang on :?
  • Fix the way :let bindings work, can't bind local a to global a
  • The way :includes and tag uniques are handled generates a morass
  • Pattern match exhaustiveness checker needs to run after :includes are accounted for
  • examples/fortune.dck fails in repl
  • Bug in test/demo/animal.dck - doesn't ever produce a bird?
  • Running examples/doggo.dck main - pick seems to be called by probabilities state doesn't seem to change?
    • More vexingly, calling e.g. color in lib/color.dck un-sticks it!!
  • Bug when running test/demo/animal.dck with renamer then eval
  • examples/doggo.dck hangs indefinitely lol
  • Hangs indefinitely when lexing incomplete string
  • emd> tydecl sex = Boy | Girl
    emd> Boy
    1:1 Constructor Boy not found
    
  • emd> (:flatten "a")
    a
    emd> :type (:flatten "a")
    1:10 Unexpected
    
  • emd> $decline (Feminine, Feminine, Singular)
    14:9 Constructor 'Nominative' has type 'case' but must be of type 'gender'
    
    (REPL-only)
  • emd> :l examples/fortune.dck
    emd> $ quote fortune
    11:8 Malformed tuple
    
    • REPL-only -> because it resolves expression first

Upstream

  • Add combinator to prettyprinter
  • for some reason prettyprinter 1.7.0 triggers a linker bug in aarch64 ld

Code Quality

  • Kick tires on :t feature
  • Move Data.whatever.Ext to Prettyprinter.Ext

Debugging

  • Verbosity
  • Turn on sanity checking?

Features

  • :oneof automatically populate with a tag?
  • Library exploration (installed)
  • Warn on redundant :includes
  • Polyglot integration!
  • Turn off zstd saving with a flag (for freebsd)
  • Change :import to :include!
  • "append" repl command
  • Circular import checker
  • Save repl states
  • Formatter
  • User-defined functions on text?
    • "character map" approach?
      • Requires expression application + type checker pass?
    • Filter? (e.g. vowels...)
  • Import/module system
    • Checkers should work with the module system
    • Modules don't give global uniqueness; fix scoping/deletions
  • Sum types (Boy | Girl)
    • Exhaustiveness checker
  • Tuples/multi-return & agreement.
    • Def need product types...
      • Dog example?
  • Lambdas?
    • typechecker that works (with mutual recursion)
  • let-bindings are kind of painful to use
  • Interpolated strings
  • Builtins
    • Alliteration
    • Capitalization lol
  • Escapes
  • docs? links...?
  • Normalization (for encoding, for one)
  • Remove duplicates (for regen adjectives...)
  • Only allow imports at the beginning
  • Install files globally?

Distribution

  • Binary distribution with make install? language_dickinson_datadir
  • Debianization?

Tooling

Tests

  • Renamer + pattern matching
  • examples/shakespeare.dck
  • golden tests via pretty-simple packages (debug output?)
  • golden tests for error messages

Test cases

  • :oneof returning a function
  • kick tires on :match and such and results of :pick?
  • Nested interpolated strings
  • test/eval/tyAnnot.dck in the test suite
  • Lexer (fail) tests
    • Capital type names...
  • Escaped characters
    • Pretty-print
  • name shadowing & such
  • property test -> generate, pretty-print, parse
  • Interleaved multi-line string interpolations/strings/string interpolations
  • Something that kicks the tires on tryEval being called on let and match?

Libraries

  • Colors
  • Animals
    • Birds
  • builtins (capitalization &c.)
  • Currying?

Performance

Paper