Skip to content

Latest commit

 

History

History
325 lines (179 loc) · 7.75 KB

README.org

File metadata and controls

325 lines (179 loc) · 7.75 KB

(twelth RacketCon) 2022

https://con.racket-lang.org/

Summary

The themes from this year mirrored those from the past: 1) pedagogy, 2) types and contracts, 3) static analysis and tooling.

Pedagogy

Spend less time defining the test cases for a verifiable problem and more on creating the set of likely areas of teachable or recoverable failure that could be indicated by the tests.

Types and Contracts

Contract systems (PyContracts, typing, django.core.validators, GraphQL Scalars, ts-code-contracts, or clojure.spec) may underspecify the contraints in cases like monotonic increasing values (e.g., time as increasing?) or total order (sort-by predicate violations of the transitive rule (sort((a, b) => false)) and can be difficult to define with current contract systems.

Tooling

Automated PR feedback from static analysis tools (e.g., Black, Pettier, ESLint, SonarQube) still hinges heavily on defining the cultural expectations of a team rather than of the tools.

Examples

Code examples associated with some of the sessions are available at src/main.scm.

Photos

images/52461948947_0e73e889b2_w.jpg images/52462630861_fbe9714c03_w.jpg images/52462861600_7b2f6e7ae3_w.jpg images/52462903404_69b8e092cf_w.jpg images/52462949593_4f16a9fd6d_w.jpg

Videos

Videos from this year and past should be available at the following:

Sessions

The final tier is Shed: Inside the Wizard Engine’s fast in-place interpreter for WebAssembly

https://github.com/titzer/virgil

side-table

  • delta ip is used for the conditional flow for the fallthrough
  • delta xip
  • vals
  • pop (number of values)

side table is 30% of original bytecode

Performance tuning

check the benchmarks looking for

  • bicg mvt atax symm 2mm adi jacobi-2d

Outcomes

  • side table design

Notes

Metaprograms and Proofs: Macros in Lean 4

Papers

Shallow and Optional Types

(: says-moo? (-> Listof Symbol)
   Boolean))
  • run through deep, shallow, optional
  • examples for calls based on nthe lang
(-> String)

Reading

Resyntax: A Macro-Powered Refactoring Tool

test: "lambda variable definition with no arguments to function definition"
------------------------------
(define f
  (λ ()
    1))
------------------------------
------------------------------
(define (f)
  1)
------------------------------

What Can Beginners Learn from Video Games?

  • Example: alien game
  • Template: define the objects, check-expect
  • Use functoinal composition for OO style interfaces

Design Recipe Guided Synthesis with Bingus

(define-struct date (year month day))
  • Example: depth that takes a Tree
(define (depth tree))

VISr: Visual and Interactive Syntax

Forge: Building a Pedagogic Solver Tool in Racket

Stacker: A runnable notional machine for an HtDP-like language

#lang http/asl

(define (f x) x)
  • stacks and linking

Examplar: Making Hay from Wheat

(define (overlap l1 l2))

Contracts for protocols

  • https://github.com/camoy
  • https://github.com/camoy/trace-contract
  • client vs. server contract violations with fish
  • use the contract to be independent of the implementation
  • sort must require:
    • comparator (function consuming two arguments)
    • input and output list is same length
    • input and output have same elements (permutation)
  • look at docs for warnings about flow (start-doc, set-stipple, hash string-set! mutability
  • define contract for increasing?
  • full vs. comparator
  • contract is as accumulator vs. comparator
  • total order, total, reflexive, antisymmetry, transitivity
  • total order: transitive violated is the (lambda (a b) #f)
  • (leq? 1 2) (leq? 3 2)
  • options contracts

fmt: A Racket code formatter

Summary of the Summer of `#lang` (Fun + Games III)

The State of Racket

Events