{"id":20425353,"url":"https://github.com/catseye/version","last_synced_at":"2025-06-21T21:03:03.991Z","repository":{"id":3341902,"uuid":"4386334","full_name":"catseye/Version","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/Version : A language with control flow based on \"ignorance spaces\"","archived":false,"fork":false,"pushed_at":"2014-08-19T12:44:48.000Z","size":140,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-05T04:45:05.203Z","etag":null,"topics":["esolang","esoteric-language","esoteric-programming-language"],"latest_commit_sha":null,"homepage":"https://catseye.tc/node/Version","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catseye.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-20T17:57:28.000Z","updated_at":"2023-11-09T10:18:18.000Z","dependencies_parsed_at":"2022-09-04T01:11:10.396Z","dependency_job_id":null,"html_url":"https://github.com/catseye/Version","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/catseye/Version","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FVersion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FVersion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FVersion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FVersion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/Version/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FVersion/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261193089,"owners_count":23122904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esolang","esoteric-language","esoteric-programming-language"],"created_at":"2024-11-15T07:13:01.792Z","updated_at":"2025-06-21T21:02:58.977Z","avatar_url":"https://github.com/catseye.png","language":"Perl","readme":"Version\r\n=======\r\n\r\nCopyright ©2001-2010 Cat's Eye Technologies. All rights reserved.\r\n\r\nWhat is Version?\r\n----------------\r\n\r\nVersion is a programming language based on the concept of\r\n*ignorance-spaces*. An ignorance-space is represented by a pattern\r\n(irregular expression.) All instructions in a Version program have a tag\r\nor label. Instructions with labels which match the current\r\nignorance-space are ignored. Other instructions are executed\r\nsequentially. When the last instruction is reached, execution wraps\r\naround to the beginning of the program. The only way to halt a program\r\nis to put it in a state in which all instructions will be ignored.\r\n\r\nOther than this ignorance-space, there are no jumping or conditional\r\nexecution mechanisms in Version.\r\n\r\nInstructions\r\n------------\r\n\r\nEach Version instruction must occur on its own line of source code, and\r\nlooks like:\r\n\r\n    label: destination = expression\r\n\r\nThe label is a string. The destination is the name of a variable, or a\r\nspecial destination name listed below. The expression may be made up of\r\nprefix operators, string variables, and special expression terms, listed\r\nbelow.\r\n\r\nThe result of executing an instruction is that a message containing the\r\nexpression is sent to the destination. If the destination is a variable,\r\nthis generally results in the state of the variable changing. This may\r\nnot however hold true under all conditions - future extensions to\r\nVersion may add further effects under prescribed conditions.\r\n\r\nSpecial Destinations\r\n--------------------\r\n\r\n-   `OUTPUT`\r\n\r\n    Sending a message to `OUTPUT` causes the datum in question to appear\r\n    on the standard output communications channel.\r\n\r\n-   `IGNORE`\r\n\r\n    Sending a message to `IGNORE` constitutes a request to change from the\r\n    current ignorance-space to a new one.\r\n\r\n-   `CAT`\r\n\r\n    Sending a message to `CAT` concatenates a value to the last\r\n    (non-Special) variable assigned (at runtime, not in source code). If\r\n    there was never a variable assigned, the last variable assigned is\r\n    considered to be `DUANE` for some reason.\r\n\r\n-   `PUT`\r\n\r\n    Sending a message to `PUT` concatenates a value to the *name* of the\r\n    last variable, and copies the value from the the last variable to\r\n    the newly named variable. Used to simulate associative arrays.\r\n\r\n-   `GET`\r\n\r\n    Like `PUT`, except it copies the value of the newly named variable\r\n    into the last variable. Note that the name of the last variable does\r\n    not actually change while using `PUT` or `GET`.\r\n\r\nSpecial Expression Terms\r\n------------------------\r\n\r\n-   `INPUT`\r\n\r\n    Accessing the name `INPUT` causes the standard input communications\r\n    channel to wait for a line of text and return it (complete with\r\n    trailing newline.)\r\n\r\n-   `IGNORE`\r\n\r\n    Accessing the name `IGNORE` allows the program to inquire as to the\r\n    current ignorance-space.\r\n\r\n-   `EOL`\r\n\r\n    The name `EOL` evaluates to the end-of-line character sequence\r\n    apropriate for the system.\r\n\r\n-   `EOF`\r\n\r\n    The variable `EOF` is actually a true variable, so its value can be\r\n    reset if needed. It takes on the value `TRUE` (a string) should the\r\n    end of the standard input channel be reached.\r\n\r\nFunctions\r\n---------\r\n\r\n-   `PRED n`\r\n\r\n    Returns the predecessor of n, that is the integer that comes before\r\n    n in the domain of integers, where n is a string containing an\r\n    integer in decimal notation.\r\n\r\n-   `SUCC n`\r\n\r\n    Returns the successor of n, that is the integer that comes after n\r\n    in the domain of integers, where n is a string containing an integer\r\n    in decimal notation.\r\n\r\n-   `CHOP s`\r\n\r\n    Returns the string s with the last character missing.\r\n\r\n-   `POP s`\r\n\r\n    Returns the string s with the first character missing.\r\n\r\n-   `LEN s`\r\n\r\n    Returns the length of the string s as a string containing an integer\r\n    in decimal notation.\r\n\r\nIgnorance-Spaces\r\n----------------\r\n\r\nThe current ignorance-space is accessed through the keyword `IGNORE`,\r\nwhether as a destination or as a term in an expression.\r\n\r\nThe ignorance-space is defined by an irregular expression, which is\r\nencoded in a string. An irregular expression is like a regular\r\nexpression in that it contains special wildcard characters. The wildcard\r\ncharacters resemble those used in MS-DOS.\r\n\r\n-   `?` - question mark - match any character\r\n-   `*` - asterisk - match any number of characters\r\n-   `|` - vertical bar - seperate alternatives\r\n\r\nAny characters, except `:`, are allowed in labels, which are case\r\nsensitive. The characters `*`, `?`, and `|`, if used, cannot be matched\r\nliterally (use `?` to match them, or don't use them - for simplicity,\r\nwildcard characters cannot be \"quoted\".)\r\n\r\nSo `DOG|CAT` would match `DOG` or `CAT` but not `cat` or `antelope` or\r\n`seahorse`. But `a*e` would match `antelope`. As would `a?t?l?p?`.\r\n\r\nConventions\r\n-----------\r\n\r\nFor reasons that are not well known, the common filename extension for\r\nVersion source files is `_7%` (underscore, seven, percent sign).\r\n\r\nEach source line which does not even contain a colon is treated as a\r\ncomment.\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fversion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fversion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fversion/lists"}