<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang, branch master</title>
<subtitle>Experimental Forth-like stack language implemented in D</subtitle>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/'/>
<entry>
<title>Play around with a vector type</title>
<updated>2019-04-15T22:12:37+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2019-04-15T22:12:37+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=908d8f01d5e964971ad76909c0ec31468ee93d2d'/>
<id>908d8f01d5e964971ad76909c0ec31468ee93d2d</id>
<content type='text'>
Using _vectors_ as fundamental datatype could make for a really neat experience.

Imagine e.g.:

* fundamental arithmetic operations that apply to both vectors and scalars
* implicit component-wise or vector-wise operations
* scalar values as 1D vectors
* higher order functions to manipulate those vectors
    * `map` function that applies a (quoted?) word to all vector elements and returns the result
    * efficient parallel operations
* a rich library of vector manipulation functions
* or even: matrices as a fundamental datatype?
    * problem: probably harder to conveniently enter via a 1-D repl
* sound more and more like a RPN version of APL…

Back to reality, here is what this prototype actually adds:

* new `DList!int` based datatype alongside the existing int, string and bool types
* basic support for printing such values in a readable fashion
* new fundamental `:` word that constructs a vector of two elements
    * `1 2 :` yields `[1, 2]`
* adapted `+` and `*` to support component-wise operations
    * `1 2 : 3 +` yields `[4, 5]`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using _vectors_ as fundamental datatype could make for a really neat experience.

Imagine e.g.:

* fundamental arithmetic operations that apply to both vectors and scalars
* implicit component-wise or vector-wise operations
* scalar values as 1D vectors
* higher order functions to manipulate those vectors
    * `map` function that applies a (quoted?) word to all vector elements and returns the result
    * efficient parallel operations
* a rich library of vector manipulation functions
* or even: matrices as a fundamental datatype?
    * problem: probably harder to conveniently enter via a 1-D repl
* sound more and more like a RPN version of APL…

Back to reality, here is what this prototype actually adds:

* new `DList!int` based datatype alongside the existing int, string and bool types
* basic support for printing such values in a readable fashion
* new fundamental `:` word that constructs a vector of two elements
    * `1 2 :` yields `[1, 2]`
* adapted `+` and `*` to support component-wise operations
    * `1 2 : 3 +` yields `[4, 5]`
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Nix shell</title>
<updated>2019-04-15T22:11:39+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2019-04-15T22:11:39+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=1b92af67088b5e57f9134703ae6115c3529fb352'/>
<id>1b92af67088b5e57f9134703ae6115c3529fb352</id>
<content type='text'>
Use `nixpkgs-unstable` by default as `dub` currently fails to compile somewhere inside its testcases.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use `nixpkgs-unstable` by default as `dub` currently fails to compile somewhere inside its testcases.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update README.md</title>
<updated>2017-04-22T16:19:38+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-22T16:19:38+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=68e508e305e8b9b244608493bc70f7b258bc60c8'/>
<id>68e508e305e8b9b244608493bc70f7b258bc60c8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix stack polution bug in fizzbuzz example</title>
<updated>2017-04-21T13:31:54+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2017-04-21T13:31:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=a94041796c0baffdf575a1ed340e1c1fa685c5e9'/>
<id>a94041796c0baffdf575a1ed340e1c1fa685c5e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Unify file / stdin input processing</title>
<updated>2017-04-21T11:00:34+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-21T10:56:34+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=22c78d20992967e24ec8c8cf5adaf7466d3d0fd7'/>
<id>22c78d20992967e24ec8c8cf5adaf7466d3d0fd7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add further stack ops, comparators to base library</title>
<updated>2017-04-20T13:32:27+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-20T13:32:27+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=f1fc6d8fd21b0bfd302e1e7db01b8d500fb37073'/>
<id>f1fc6d8fd21b0bfd302e1e7db01b8d500fb37073</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add base library for non-primitive words</title>
<updated>2017-04-19T20:22:18+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-19T20:22:18+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=39099c0398a978965a71409bcec67f20a8c02fc7'/>
<id>39099c0398a978965a71409bcec67f20a8c02fc7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Automatically process files passed as arguments</title>
<updated>2017-04-19T20:20:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-19T20:20:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=fd8a28b1ee22993bf70b0f451b46ab0a631b0c17'/>
<id>fd8a28b1ee22993bf70b0f451b46ab0a631b0c17</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename `over` to `ovr` so that all stack operations are three letter words</title>
<updated>2017-04-18T08:54:33+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-18T08:54:33+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=fa1bdcab3f371f1ec79621fbd890f3ddd8b5019c'/>
<id>fa1bdcab3f371f1ec79621fbd890f3ddd8b5019c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename boolean operators</title>
<updated>2017-04-18T08:50:59+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-18T08:45:35+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=44a8573c4d4081552320c80bf9a2ed3eaba6c91c'/>
<id>44a8573c4d4081552320c80bf9a2ed3eaba6c91c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Include MIT license text</title>
<updated>2017-04-17T18:38:00+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T18:38:00+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=717da3529c617c5a8b58b99d45fcd86d8da65a7c'/>
<id>717da3529c617c5a8b58b99d45fcd86d8da65a7c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add word documentation to README.md</title>
<updated>2017-04-17T18:35:55+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T18:35:55+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c484b2fe3bbfffaa0509f919972dd25a35e82ad7'/>
<id>c484b2fe3bbfffaa0509f919972dd25a35e82ad7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add logic negation operation; and, or conditions</title>
<updated>2017-04-17T12:44:26+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T12:44:26+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=6e115f5229dc2323804b8250138339a7f62bd852'/>
<id>6e115f5229dc2323804b8250138339a7f62bd852</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add debug instruction for non-destructive printing of the whole stack</title>
<updated>2017-04-17T12:36:45+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T12:36:25+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=f321905b1436e888c99b4863e3943f090cbadce1'/>
<id>f321905b1436e888c99b4863e3943f090cbadce1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add some more Forth stack operators</title>
<updated>2017-04-17T12:28:38+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T12:28:38+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=dda2af16ce4ea439ee90390526dbd7f2b8971128'/>
<id>dda2af16ce4ea439ee90390526dbd7f2b8971128</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add some example programs</title>
<updated>2017-04-17T11:56:14+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-17T11:56:14+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=399faa1f97390215628d245f006610a9586ff1e9'/>
<id>399faa1f97390215628d245f006610a9586ff1e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Prevent definition nesting</title>
<updated>2017-04-16T11:37:23+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-16T11:37:23+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=20b916b3c90828028c4e981dea06696c23998cf1'/>
<id>20b916b3c90828028c4e981dea06696c23998cf1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up state, primitives, processing distinction</title>
<updated>2017-04-16T11:29:23+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-16T11:29:23+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=fe08adffcf1446dce2a7d366f7f12c90fdce7e58'/>
<id>fe08adffcf1446dce2a7d366f7f12c90fdce7e58</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Extract variable management, move into `state` package</title>
<updated>2017-04-16T11:17:22+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-16T11:17:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=44f419264898f84fe5536f3ea159c18b381e6083'/>
<id>44f419264898f84fe5536f3ea159c18b381e6083</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move top level processing into `machine` module</title>
<updated>2017-04-15T21:10:49+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T21:10:49+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c06a6ade2d144cd8042392e597ead385756bcbc7'/>
<id>c06a6ade2d144cd8042392e597ead385756bcbc7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Hide module implementation details</title>
<updated>2017-04-15T20:34:47+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T20:33:15+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=b1fa3024fd2fae76e6e0345861f3fa17b4a082ef'/>
<id>b1fa3024fd2fae76e6e0345861f3fa17b4a082ef</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clearly separate handling of core, conditional and definition primitives</title>
<updated>2017-04-15T16:56:35+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T16:56:35+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=a654500cd3084cff93e4cf866a15e7977ff0cc94'/>
<id>a654500cd3084cff93e4cf866a15e7977ff0cc94</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Handle definition, conditional primitive words in respective modules</title>
<updated>2017-04-15T16:16:39+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T16:16:39+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=568e457d5f879633adc8a33d8c2979d563556868'/>
<id>568e457d5f879633adc8a33d8c2979d563556868</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Abstract stack prepending</title>
<updated>2017-04-15T12:21:20+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T12:21:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=bce4d934a47023096e74ac39ed4d3a2cd99bc8e4'/>
<id>bce4d934a47023096e74ac39ed4d3a2cd99bc8e4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Perform custom word definition at the same level as conditional primitives</title>
<updated>2017-04-15T12:02:50+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T12:02:50+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=47611c4938363346be414b1cf00a63b438e043c4'/>
<id>47611c4938363346be414b1cf00a63b438e043c4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add README.md, example</title>
<updated>2017-04-15T11:41:02+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-15T11:40:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=5ca4d7acb5545050a731b0adc2e39b3ed65b7fc9'/>
<id>5ca4d7acb5545050a731b0adc2e39b3ed65b7fc9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Convert structure to _dub_ build system</title>
<updated>2017-04-14T21:21:51+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-14T21:21:51+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c6d2b259a4f253403929f6f1104395a6a71b1be6'/>
<id>c6d2b259a4f253403929f6f1104395a6a71b1be6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify token handling in the context of word definitions</title>
<updated>2017-04-14T16:05:15+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-14T16:05:15+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=963ace2e5ba0337130e5f343d7ab97a30b4547ae'/>
<id>963ace2e5ba0337130e5f343d7ab97a30b4547ae</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up core processing loop</title>
<updated>2017-04-14T15:40:49+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-14T15:40:49+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=526b06922e10fcfe1d1613a1e639694b0d892504'/>
<id>526b06922e10fcfe1d1613a1e639694b0d892504</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement deferred word, conditional resolution</title>
<updated>2017-04-13T19:51:54+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-13T19:51:54+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=d2126fe52fd3c002631e66fa7d6e2d5cd8862bea'/>
<id>d2126fe52fd3c002631e66fa7d6e2d5cd8862bea</id>
<content type='text'>
Due to the non-trivial way tokens were previously processed the compiler could not safely perform tail-call elimination. Thus the _slang_ evaluation depth was restricted by the maximum call stack size.

This issue is mitigated by introducing deferred word resolution - i.e. pushing expanded tokens onto a buffer stack and processing them in an explicit loop.

This change ties into the implementation of the language's conditional primitive. The previous implementation did implicitly not support direct nesting of conditional expressions such as:

	truthA if
		mainBranch
		truthB if
			secondaryMainBranch
		then else
	then
		alternativeBranch
	else

This issue is now made explicit by disallowing direct nesting of conditionals as depicted above. Appropriate exceptions are generated when required and the conditional primitive is reimplemented in a more robust fashion under the assumption that this rule holds. Note that nesting is still fully supported iff. the nested conditional is contained in a deferredly evaluated word. As a positive side effect this will make it slightly harder to generate unreadable code by forcing developers to write simpler words.

The main change of the conditional primitive lies in deferring branch token processing until the conditional expression is concluded by `else`. This is achieved by capturing non-dropped tokens in an internal buffer akin to how the word definition operator `§` is implemented.
The branch buffer is discharged after `else` is evaluated. Discharging is triggered via the newly introduced `result` method of the primitive evaluation module. This avenue for injecting tokens into the processing stream may be used by further primitives in the future.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Due to the non-trivial way tokens were previously processed the compiler could not safely perform tail-call elimination. Thus the _slang_ evaluation depth was restricted by the maximum call stack size.

This issue is mitigated by introducing deferred word resolution - i.e. pushing expanded tokens onto a buffer stack and processing them in an explicit loop.

This change ties into the implementation of the language's conditional primitive. The previous implementation did implicitly not support direct nesting of conditional expressions such as:

	truthA if
		mainBranch
		truthB if
			secondaryMainBranch
		then else
	then
		alternativeBranch
	else

This issue is now made explicit by disallowing direct nesting of conditionals as depicted above. Appropriate exceptions are generated when required and the conditional primitive is reimplemented in a more robust fashion under the assumption that this rule holds. Note that nesting is still fully supported iff. the nested conditional is contained in a deferredly evaluated word. As a positive side effect this will make it slightly harder to generate unreadable code by forcing developers to write simpler words.

The main change of the conditional primitive lies in deferring branch token processing until the conditional expression is concluded by `else`. This is achieved by capturing non-dropped tokens in an internal buffer akin to how the word definition operator `§` is implemented.
The branch buffer is discharged after `else` is evaluated. Discharging is triggered via the newly introduced `result` method of the primitive evaluation module. This avenue for injecting tokens into the processing stream may be used by further primitives in the future.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename conditional primitive implementation to fit overall naming scheme</title>
<updated>2017-04-13T10:25:41+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-13T10:25:41+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=11d6996d9b56b537946b2894a66f56f5cf3576b8'/>
<id>11d6996d9b56b537946b2894a66f56f5cf3576b8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce native boolean type</title>
<updated>2017-04-12T19:55:26+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T19:55:26+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=d5ea77e49e30ad751678f90123f891344642a36c'/>
<id>d5ea77e49e30ad751678f90123f891344642a36c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Expand conditional primitive to choose between `then` and `else` branch</title>
<updated>2017-04-12T16:15:38+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T16:15:38+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=061db1f3810efac768dc7a83a8fbfaecfc512577'/>
<id>061db1f3810efac768dc7a83a8fbfaecfc512577</id>
<content type='text'>
i.e. `1 if true then false else` evaluates to `true`, `0 if true then
false else` evaluates to `false`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
i.e. `1 if true then false else` evaluates to `true`, `0 if true then
false else` evaluates to `false`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement integer comparsion primitives</title>
<updated>2017-04-12T16:06:10+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T16:06:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=d0c6994a0c3706a3eb09d32c8bf33513b1dbd3be'/>
<id>d0c6994a0c3706a3eb09d32c8bf33513b1dbd3be</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Modularize primitives implementation, add stack manipulators</title>
<updated>2017-04-12T15:24:09+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T14:58:18+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=4804893a6616a312ac8028e42d2aa990018ffbe6'/>
<id>4804893a6616a312ac8028e42d2aa990018ffbe6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implementent conditional primitive</title>
<updated>2017-04-12T14:47:45+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T14:47:45+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=900c223ed40e36ffedce95e9a987d9a3c0309271'/>
<id>900c223ed40e36ffedce95e9a987d9a3c0309271</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Modularize implementation</title>
<updated>2017-04-12T12:01:50+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T12:01:50+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=45e4fe29a237ae5cda4147c803046ff5f6793770'/>
<id>45e4fe29a237ae5cda4147c803046ff5f6793770</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Catch undefined division, modulo operations</title>
<updated>2017-04-12T10:44:59+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T10:44:59+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=56f4704c1292e4941d27a9971f5652a27e755672'/>
<id>56f4704c1292e4941d27a9971f5652a27e755672</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement basic empty stack handling, div, mod</title>
<updated>2017-04-12T10:18:01+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T10:18:01+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c3aa90c4056f7e49197f7b240e39392776c913e6'/>
<id>c3aa90c4056f7e49197f7b240e39392776c913e6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement support for variables, mixed types in data stack</title>
<updated>2017-04-12T09:45:40+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-12T09:45:40+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c0bf1dc624f373872d5dd8e67d756d3ec70830e7'/>
<id>c0bf1dc624f373872d5dd8e67d756d3ec70830e7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Play around with contractual programming</title>
<updated>2017-04-11T19:57:43+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-11T19:57:43+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=29626d3beaabdc638ed5cb52f2b252bb35e7ec0b'/>
<id>29626d3beaabdc638ed5cb52f2b252bb35e7ec0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify word definition, evaluation</title>
<updated>2017-04-11T19:35:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-11T19:35:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=9fa3bcf8d3d8801ae01530afa3cff9a31e22a0a7'/>
<id>9fa3bcf8d3d8801ae01530afa3cff9a31e22a0a7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite in D, support for word definitions</title>
<updated>2017-04-10T19:41:32+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-04-10T19:41:32+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=57ab42eabb5a9a7ddf7d6a416bf18eca63336a87'/>
<id>57ab42eabb5a9a7ddf7d6a416bf18eca63336a87</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement primitives as lambda expressions in an unordered set</title>
<updated>2017-03-31T17:18:35+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-03-31T17:18:35+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=c74d8917f3890ec1ed9bab158ccea309cb05e0cd'/>
<id>c74d8917f3890ec1ed9bab158ccea309cb05e0cd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement swap, duplicate and delete words</title>
<updated>2017-03-30T20:56:30+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-03-30T20:56:30+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=1181260cd68fe25be5d312bc132215a3a427179a'/>
<id>1181260cd68fe25be5d312bc132215a3a427179a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Minimal stack calculator REPL implementation</title>
<updated>2017-03-30T20:32:06+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2017-03-30T20:31:16+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/slang/commit/?id=5046728ca7285f2a2139c14252ee657c0ab3abcf'/>
<id>5046728ca7285f2a2139c14252ee657c0ab3abcf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
