Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Sail Programming Language Tutorial (1976) (trailing-edge.com)
25 points by brudgers on March 27, 2015 | hide | past | favorite | 5 comments


If the use of the underscore character ("_") for assignment statements seems odd, keep in mind that the Sail computer's native character set included a left-arrow character, and it's what was really used for assignment. The present document is clearly an ascii-ized version of the real manual, for use on non-Sail machines (such as regular Dec PDP-20s running Tops-20). Other special characters included less-than-or-equal, not-equal, intersection, union, etc. Check out http://www.saildart.org/allow/sail-charset-utf8.html for the details. And if you want to see what the tutorial really looked like, there's a scanned pdf at www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA042494


My language uses left arrow* for type annotation, it is simply typed as <- and the editor renders it as a unicode left arrow. Assignment is =, but it is rendered as a unicode :=; equality is == but rendered as a more compact unicode ==. Check out:

https://youtu.be/__28QzBdyBU

Back the future, I guess.

* I wanted to use Pascal-style ":" for type annotations, but I based my syntax on Python, which uses ":" for blocks.


The character that is now underscore in ASCII-1967 and in the present really was a left-arrow in ASCII-1963, so that's why it's written that way.


Smalltalk-80 used the underscore '_' character for assignment. It was also rendered as a left pointing arrow.


The precursors to TeX (1978-82) and Metafont (1979-83) are good examples of complete, non-trivial Sail programs. Both were written by Donald Knuth; the sources for prototype-TeX are in http://www.saildart.org/[TEX,DEK] (see the latest rev of each TEX*.SAI file); while prototype-MF is in http://www.saildart.org/[MF,DEK]




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: