Ngn/k: Difference between revisions
No edit summary |
(end of support) |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
| dev = [[ngn]] |
| dev = [[ngn]] |
||
| rel = 2017 |
| rel = 2017 |
||
| dialect = K6 |
| dialect = [[K6]] |
||
| ttype = none |
| ttype = none |
||
| table = yes (no prettyprinting) |
| table = yes (no prettyprinting) |
||
| proto = |
| proto = partial support |
||
| unicode = full support |
| unicode = full support |
||
| implang = C |
| implang = C |
||
Line 18: | Line 18: | ||
| docs = [https://codeberg.org/ngn/k/src/branch/master/repl.k#L10 in repl] |
| docs = [https://codeberg.org/ngn/k/src/branch/master/repl.k#L10 in repl] |
||
| runurl = editor ([https://ngn.bitbucket.io/k/# Bitbucket], [https://ngn.codeberg.page/k/# Codeberg]), repl ([https://ngn.bitbucket.io/k/#r Bitbucket], [https://ngn.codeberg.page/k/#r Codeberg]) |
| runurl = editor ([https://ngn.bitbucket.io/k/# Bitbucket], [https://ngn.codeberg.page/k/# Codeberg]), repl ([https://ngn.bitbucket.io/k/#r Bitbucket], [https://ngn.codeberg.page/k/#r Codeberg]) |
||
| infby = K7, K9 |
| infby = [[K7]], [[K9]] |
||
}} |
}} |
||
'''ngn/k''' is an implementation of K6 created by [[ngn]] |
'''ngn/k''' is an implementation of [[K6]] created by [[ngn]]. |
||
ngn/k has undergone several rewrites, borrowing ideas from many [[Arthur Whitney]] Ks, and occasionally deviating from their functionality. |
|||
⚫ | |||
⚫ | |||
== History == |
== History == |
||
Line 33: | Line 35: | ||
sort=newest</ref>. It has remained in that state ever since. |
sort=newest</ref>. It has remained in that state ever since. |
||
The codebase was the moved to |
The codebase was the moved to Sourcehut (sr.ht) on December 21, 2020<ref>https://chat.stackexchange.com/transcript/90748?m=56558503#56558503</ref>. |
||
The current version of ngn/k resides in Codeberg, and the move was officially announced on May 21, 2021<ref>https://chat.stackexchange.com/transcript/message/57843141#57843141</ref>. The codeberg repository has its initial commit at 2019, where it had support for x86_64 linux only. |
The current version of ngn/k resides in Codeberg, and the move was officially announced on May 21, 2021<ref>https://chat.stackexchange.com/transcript/message/57843141#57843141</ref>. The codeberg repository has its initial commit at 2019, where it had support for x86_64 linux only. |
||
ngn/k was indefinitely frozen<ref>https://codeberg.org/ngn/k/commit/7e7420217f9df95273a8605e05d6335d66dd8f8a</ref> on May 24, 2022. |
|||
In January 2024, ngn/k was announced to be no longer supported. |
|||
== Running == |
== Running == |
||
Line 43: | Line 49: | ||
[[User:Traws|Traws]] has a fork of ngn/k on [https://github.com/traws0/ngnk-windows Github] which is made for compilation under cosmopolitan libc. |
[[User:Traws|Traws]] has a fork of ngn/k on [https://github.com/traws0/ngnk-windows Github] which is made for compilation under cosmopolitan libc. |
||
== Features == |
|||
=== I/O Verbs === |
|||
ngn/k's I/O verbs are defined as per the [[K6]] standard. They are made up of a single digit, followed by a <code>:</code> symbol: <code>loc u: data</code> for output and <code>u: loc</code> for input. |
|||
A symbol, string or number can be given as <Code>loc</code>. Any number given must be a valid tie number (see: [[Tie(ngn/k)]]). |
|||
Every input verb is classified by <code>data</code>: |
|||
* <code>0:</code> takes lists of strings. (concatenates them with newlines) |
|||
* <Code>1:</code> takes a single string. |
|||
=== Reserved Symbols === |
|||
ngn/k has reserved symbols used for providing access to features that are not important enough to be added as primitives, but still warrant a name for quick use. These symbols can be used like any other nouns. |
|||
The ngn/k help topic for adverbs is available at <code>\`</code> in the ngn/k repl. |
|||
=== Defined Verbs === |
|||
ngn/k allows creation of new verbs that can be used infix, as part of its syntax. These must be defined as follows (using <code>∇</code> as an example symbol): |
|||
<pre>(∇:): monad |
|||
(∇): dyad</pre> |
|||
== References == |
== References == |
||
[[Category:Implementations]] |
Latest revision as of 12:47, 28 January 2024
Developer | ngn |
---|---|
Released | 2017 |
| |
Dialect | K6 |
Temporal types | none |
Table support | yes (no prettyprinting) |
Prototypes | partial support |
| |
Implemented in | C |
Platforms | x86_64 |
Operating Systems | Linux, BSD, Windows(unofficial) |
License | AGPL |
| |
Website | Codeberg |
Documentation | in repl |
Run Online | editor (Bitbucket, Codeberg), repl (Bitbucket, Codeberg) |
| |
Influenced By | K7, K9 |
ngn/k is an implementation of K6 created by ngn.
ngn/k has undergone several rewrites, borrowing ideas from many Arthur Whitney Ks, and occasionally deviating from their functionality.
ngn/k is written in Whitney C, and is written to be performant, compact, and with minimal dependencies.
History[edit]
Development on ngn/k was started on April 9, 2017[1]. The older Github repository for ngn/k points towards kparc.io[2] for its spec.
The codebase was then moved to Gitlab. The exact date is not known since the repository no longer exists on the site.
The ngn/k repl and editor was created in October 2020 and subsequently moved from ngn.bitbucket.io
to ngn.bitbucket.io/k
[3]. It has remained in that state ever since.
The codebase was the moved to Sourcehut (sr.ht) on December 21, 2020[4].
The current version of ngn/k resides in Codeberg, and the move was officially announced on May 21, 2021[5]. The codeberg repository has its initial commit at 2019, where it had support for x86_64 linux only.
ngn/k was indefinitely frozen[6] on May 24, 2022.
In January 2024, ngn/k was announced to be no longer supported.
Running[edit]
The main way of running ngn/k is building it. This can be done reliably on Unix-like systems with the help of either clang-12
or gcc-10
C compilers, and the make
utility. Build instructions can be found in the ngn/k README file.
ngn/k has a WASM distribution available online. These can be accessed from the "Run Online" links in the sidebar. The Codeberg page is restricted in some countries.
Traws has a fork of ngn/k on Github which is made for compilation under cosmopolitan libc.
Features[edit]
I/O Verbs[edit]
ngn/k's I/O verbs are defined as per the K6 standard. They are made up of a single digit, followed by a :
symbol: loc u: data
for output and u: loc
for input.
A symbol, string or number can be given as loc
. Any number given must be a valid tie number (see: Tie(ngn/k)).
Every input verb is classified by data
:
0:
takes lists of strings. (concatenates them with newlines)1:
takes a single string.
Reserved Symbols[edit]
ngn/k has reserved symbols used for providing access to features that are not important enough to be added as primitives, but still warrant a name for quick use. These symbols can be used like any other nouns.
The ngn/k help topic for adverbs is available at \`
in the ngn/k repl.
Defined Verbs[edit]
ngn/k allows creation of new verbs that can be used infix, as part of its syntax. These must be defined as follows (using ∇
as an example symbol):
(∇:): monad (∇): dyad
References[edit]
- ↑ https://github.com/ngn/k/commits/aff40c33f75eeab4c5f69fa55b795d83fbd6288a
- ↑ https://kparc.com/k.txt
- ↑ https://chat.stackexchange.com/search?q=ngn.bitbucket.io&Room=90748&page=10&pagesize=50& sort=newest
- ↑ https://chat.stackexchange.com/transcript/90748?m=56558503#56558503
- ↑ https://chat.stackexchange.com/transcript/message/57843141#57843141
- ↑ https://codeberg.org/ngn/k/commit/7e7420217f9df95273a8605e05d6335d66dd8f8a