Specifications for data formats, RDF concepts, and such.
(untested advice to self as of 2024-10-19):
Turtle? Though ContentCouch uses RDF+XML. But XML is a pain to deal with.
InputType ->{effects} OutputType
can be used as a
lowest-common-denominator to describe everything else.
- Functions with side-effects
- Pure functions
- A special case of function-with-side-effects whose list of possible effects is empty
- Single argument, single return value
- Multiple, possibly named arguments
- Multiple, possibly named return values (think continuation passing style; returning and calling are the same kind of thing)
- Stack operations
- Which can be thought of as functions that take a stack and return a stack, with or without side-effects
- Stream processes
ProtoProcess = () ->{Read,Write,...} Int32
- Those that eat bytes, emit bytes, and finally exit with some error code
- Like an OS process, but without side-effects
- Those that do all that but can also have other effects
- Basically like an OS process
- Commands
- In the spirit of shell or Tcl commands
List String -> Map String String -> ProtoProcess
, i.e. a function that takes a list of arguments (argv
) and environment variable values and returns some representation of a a process that can be executed any number of times.
Former favorite language for getting things done: Ruby.
More recently, TypeScript, via Deno.
I think that Unison is a good idea, though I find it cumbersome to program in, but its notation for indicating effects is useful for formalizing ideas outside of Unison.
Factor seems very close to the idea of a Forthlike languages with high-level constructs that I keep trying to build.
As of 2024-10-19 I am on a Raku (formerly 'Perl 6') kick. If nothing else, Perl is interesting.
Make a new sub-project of Scratch38. Start here.
TScript34 has a lot of random sub-projects, too.
If something outgrows TScript34, it could get its own TOG Software Project number.
This is too ambiguous. I might standardize on 'everything is a TOG Software Project', but using high numbers with lots of digits for probably-throwaway things.
Generate UUIDs or OIDs for new concepts rather than coming up with a 'nice' name right away. They can always be aliased together later.
Can use names like http://ns.nuke24.net/X-2024/Whatever
as placeholders.
- namespaces.tef, which should probably be moved into this repository.
- TOGVM
- RDF types and predicates for describing functional programs
- M3U Extensions
- TOGoS Binary Blocks and TOGoS Text Blocks
- TSVFileManifestV1
- one
#format
('hash-format') format
- one
I try to stick to a relatively consistent convention
for text-based formats, which is that #
can be used to indicate
line comments or half-out-of-band data. If followed by whitespace,
it's a comment. If followed by a word, it may have special meaning.
#!
is also treated as comment to allow for shebang lines.
i.e. lexical <-> value encodings
- https://www.nuke24.net/docs/2023/SubjectDatatype.html
- TS34Encoded Datatype
- Sort of a flexible meta-datatype that can be used to indicate a series of encodings
- active:
- For representing function applications as URIs
- urn:bitprint:
- x-git-object:
- For referencing blobs, directories, and commits by their Git hash (which is based on, but isn't exactly, SHA-1)
- x-rdf-subject:
- Prefix to indicate the concept described by the document identified by the rest of the URI.
- urn:oid:
- Identify things by OID