ATS Programming Language (.moe)

1. the cons constructor needs {n:int}, not [n:int]
2. the implementation of get_fifth_member needs cons(x, _) where it has x
3. it's not just "possible" that the length of somelist isn't known; it definitely isn't _statically_ known

The video is pretty muddled in parts.

The FFI scales with you from "just use this thing" to "masterfully prevent callers from misusing this thing" (but I don't get into the second part).

It kinda breaks down at the end.

Exceptions, Arrays, and I/O

templates, polymorphic functions, and polymorphic data types

Featuring: var, linear objects with holes, C FFI

All joking aside, if your language doesn't have datatypes in it, what are you doing with your life?

This is mostly going to be things you already intuitively know, but occasionally there's a point that's very unique to ATS.

The rest of the Elements of Programming chapter, from Static Semantics
Second try at this video.

In retroview this is terrible and I'm doing it again. orz

Idris examples taken from

The way this video went, you miss all the mean, unfair things I say about Idris.

The start of a new video series where I go through the book, Introduction to Programming in ATS, available at

("happy", "tree")

Exhaustive tests using a corpus of a hundred million lines of
--nevermind, here's a single benchmark.

Featuring: 1. a more reasonable dot-notation example
2. creating lists more efficiently than normal for FP langs, using holes
3. several minutes of my not seeing a basic syntax error. orz

obj.go(east) is a thing you can totally do in ATS (with caveats)

Trivial uses of holes are trivial. But it's good to get this right before putting them to real use.

Use templates and functors to specialize code as needed.
Don't try to do everything with polymorphic functions.

I got a segfault while using a simple C library, why?

Trying something different--a screencast with typed instead of spoken commentary, against electro-swing. Music's compiled by Xefos Music @

The coolest part of ATS!

Bob talking about TTD:

More about this subject in section III of Introduction to Programming in ATS

Of course there would be 'runtime checking' in something like case+ x of knight(_) => ... | ninja(_) => ...; , as the tag value is what distinguishes a knight from a ninja.

@00:23, "just like an enum class in any other language".

Some of the 'caching' problems at the end were just that I didn't run 'make'.

This was also a test of a new screencasting setup.

A start on the 'adventure game' from Land of Lisp

I get pretty quiet in parts of this.

I plan to implement two simple games, but the first game's implementation is poor enough that we redo it, and see a little more of ATS.

@25:00, "So I'm actually leaking memory here--well, I *would've* leaked memory, if ATS had allowed it."


Created 1 year, 2 months ago.

26 videos

CategoryScience & Technology

Subscribe to this channel for screencasts about the ATS programming language:

- ML derived
- Dependent types
- Linear types
- "Programming with Theorem Proving"
- Templates
- As fast or faster than C (no joke)
- Viable with and without a GC
- Excellent FFI
- Compiles to C, JavaScript, Perl, Python, Scheme, Clojure, PHP, R

Look for more at