Browse Source

init commit

Hazel Levine 9 months ago
4 changed files with 58 additions and 4 deletions
  1. +1
  2. +0
  3. +57
  4. BIN

+ 1
- 1

@ -1,4 +1,4 @@
MIT License Copyright (c) <year> <copyright holders>
MIT License Copyright (c) 2020 Hazel Levine
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

+ 0
- 3 View File

@ -1,3 +0,0 @@
# tent
another programming language

+ 57
- 0 View File

@ -0,0 +1,57 @@
#+TITLE: The Tent(ative) Programming Language
#+DATE: May 22, 2020
#+STARTUP: inlineimages nofold
The *Tent(ative)* programming language is a language that doesn't exist and
probably never will. Any questions?
In short, this is a research project for myself, and an effective playground for
PLT. I do not expect anyone to use this, and frankly I do not expect to finish
this. I hope this helps me to retain my sanity over a summer in quarantine.
* Table of Contents :TOC_3:noexport:
- [[#why-tent][Why Tent?]]
- [[#design-goals][Design goals]]
- [[#syntax-as-a-high-priority][Syntax as a high priority]]
- [[#functional][Functional]]
- [[#strict-typing][Strict typing]]
- [[#expressible-as-a-context-free-grammar][Expressible as a context-free grammar]]
- [[#target-racket][Target Racket]]
* Why Tent?
Fuck, iunno.
* Design goals
** Syntax as a high priority
When reading through the specifications for other programming languages, the
"softer" elements of language design very rarely get brought up, nor does
accessibility. Take the example of Rust, which is a language whose semantics
fail to line up with its syntax, which leads to line noise. (I like Rust, but...)
Furthermore, one of the things that nearly /never/ gets brought up in language
design is that of accessibility. Namely, I know multiple dyslexics who are
effectively left unable to read Lisp due to the syntax giving them a literal
headache. If the language is unable to be readable, it needs to be redesigned.
** Functional
This has a double meaning. The language must be Turing-complete, and it has to
/work/. Given my own inability to finish projects, this one will be difficult.
Furthermore, the language should generally follow a functional paradigm. Unlike
Haskell and the like, I expect mutability to be rather common, and have no
intent of implementing means of reducing side-effects such as the IO or State
monad. However, whenever purity is possible, it should be used.
** Strict typing
I haven't decided exactly what this means in the context of this language yet,
as I have very little idea as to the language's semantics.
** Expressible as a context-free grammar
Self-explanatory. CFGs are far easier to parse. This also goes hand-in-hand with
quality syntax.
** Target Racket
Racket is a wonderful language for writing other languages. Namely, Racket
grants the ability to entirely avoid details like file I/O. This allows me to do
very little more outside the language itself aside from facilitating
=#lang tent=. It also means interoperability with Racket code, ideally, which
if this project is ever finished would make it /far/ more useful.

x.png View File

Before After
Width: 740  |  Height: 309  |  Size: 87 KiB