Chris Birchall
Cheeky control structure
php, BASIC
0/5
0/5
SAMPLE
SAMPLE
(credit: Julien Truffaut)
Haskell, ML
4/5
3/5
@ List(1,2,3).foldLeft(Nil){ (xs, x) => x::xs }
type mismatch;
found : List[Int]
required: scala.collection.immutable.Nil.type
(credit: Mark Eibes)
PureScript
2/5
1/5
Unordered, labelled collection of types.
Can be used for extensible effects.
Agda, Haskell, Idris
5/5 (Done!)
0/5
Leave deliberate 'holes' in your program, for interactive type-driven development
Idris
1/5
0/5
Types can depend on values
e.g. "List of Ints with size 4"
Idris 2, Linear Haskell, ATS, Rust
1/5
0/5
Can't use a value more than once, must use a value at least once, etc.
Pony
1/5
0/5
Safe sharing of mutable state
(credit: 𝖬𝖺𝗋𝖼𝗈 𝖡𝗈𝗋𝗌𝗍)
Java, Go
3/5
2/5
Nobody ever needing to embed that xkcd comic in their slides again
(credit: Channing Walton)
F#
2/5
0/5
Stack-safety without sacrificing heap.
Requires a JVM change.
Go, Lua, Kotlin, ES6 (generators)
5/5 (Done!)
0/5
Lightweight threads with user-defined suspension points
Coroutines library; First-class Coroutines for Scala; Diving deep into Kotlin Coroutines; Project Loom (thanks to Diego for the tip!)
(credit: Maksim Aleshko)
F#, Idris
3/5
0/5
Generating new types based on external input, e.g. a schema file
(credit: Jan Schulte)
Haskell
3/5 (would be nice if Scaladex had an API...)
0/5
Search for functions by name or type signature
(credit: Debasish Ghosh, Diogo Castro)
Haskell
3/5
5/5 (see Martin's keynote!)
Automatic derivation of type class instances
(credit: Martin Lechner)
Rust
4/5
0/5
The future of the web!
Haskell, PureScript, Eff
4/5
3/5
Pure/impure separation enforced by the type system.
Effect system built in to the language.