<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chad-fast/src/Interpreter, branch master</title>
<subtitle>An implementation of CHAD, towards performance
</subtitle>
<id>https://git.tomsmeding.com/chad-fast/atom?h=master</id>
<link rel='self' href='https://git.tomsmeding.com/chad-fast/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/'/>
<updated>2025-11-10T20:50:25Z</updated>
<entry>
<title>Move module hierarchy under CHAD.</title>
<updated>2025-11-10T20:50:25Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-11-10T20:49:45Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=174af2ba568de66e0d890825b8bda930b8e7bb96'/>
<id>urn:sha1:174af2ba568de66e0d890825b8bda930b8e7bb96</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reorder TLEither to after TEither</title>
<updated>2025-04-29T18:38:05Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-04-29T18:37:06Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=d0eb9a1edfb4233d557d954f46685f25382234d8'/>
<id>urn:sha1:d0eb9a1edfb4233d557d954f46685f25382234d8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Complete monoidal accumulator rewrite</title>
<updated>2025-04-29T13:54:12Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-04-29T13:54:12Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=3fd8d35cca2a23c137934a170c67e8ce310edf13'/>
<id>urn:sha1:3fd8d35cca2a23c137934a170c67e8ce310edf13</id>
<content type='text'>
</content>
</entry>
<entry>
<title>WIP interpreter support for new monoidal accumulators</title>
<updated>2025-04-28T10:05:06Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-04-28T10:05:06Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=919a36f8eed21501357185a90e2b7a4d9eaf7f08'/>
<id>urn:sha1:919a36f8eed21501357185a90e2b7a4d9eaf7f08</id>
<content type='text'>
</content>
</entry>
<entry>
<title>WIP revamp accumulators again: explicit monoid types</title>
<updated>2025-04-27T21:34:59Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-04-27T21:34:59Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=b1664532eaebdf0409ab6d93fc0ba2ef8dfbf372'/>
<id>urn:sha1:b1664532eaebdf0409ab6d93fc0ba2ef8dfbf372</id>
<content type='text'>
No more D2 in accumulators! Paving the way for configurable sparsity of
products and arrays. The idea is to make separate monoid types for a
"product cotangent" and an "array cotangent" that can be lowered to
either a sparse monoid or a non-sparse monoid. Downsides of this
approach: lots of API duplication.
</content>
</entry>
<entry>
<title>D2[Array] now has a Maybe instead of zero-size for zero</title>
<updated>2025-03-26T14:11:48Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-03-26T14:11:48Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=a00234388d1b4e14481067d030bf90031258b756'/>
<id>urn:sha1:a00234388d1b4e14481067d030bf90031258b756</id>
<content type='text'>
Remaining problem: 'add' in Compile doesn't use the D2 stuff
</content>
</entry>
<entry>
<title>Much process with accumulator revamp</title>
<updated>2025-03-14T22:29:51Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-03-14T22:29:51Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=fff6beda3523abce3d27037ea2fb020fce31f502'/>
<id>urn:sha1:fff6beda3523abce3d27037ea2fb020fce31f502</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Compile: Emit structs in proper order</title>
<updated>2025-02-25T22:56:16Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2025-02-25T22:56:16Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=7fa10a9a07c7160531baf595d1111277c17a38b2'/>
<id>urn:sha1:7fa10a9a07c7160531baf595d1111277c17a38b2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Working argument accum mode (...)</title>
<updated>2024-11-26T22:05:30Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2024-11-26T22:05:30Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=ade38c607a8d0dc8dc1d701084ed88df2fa89df9'/>
<id>urn:sha1:ade38c607a8d0dc8dc1d701084ed88df2fa89df9</id>
<content type='text'>
The derivative of 'neural' in full accum mode is pretty atrocious now; I
think this is because when you have code like this:

  \(a :: Arr 1 R) -&gt;
    let b = a
    in let c = b
       in sum d

then because the argument, as well as both let bindings, bind a value of
array type, each will introduce an accumulator, hence resulting in three
(!) nested `with` clauses that each just contribute their result back to
their parent. This is pointless, and we should fix this.
</content>
</entry>
<entry>
<title>Test gmm</title>
<updated>2024-11-10T21:40:54Z</updated>
<author>
<name>Tom Smeding</name>
<email>tom@tomsmeding.com</email>
</author>
<published>2024-11-10T21:40:54Z</published>
<link rel='alternate' type='text/html' href='https://git.tomsmeding.com/chad-fast/commit/?id=a46f53695d1dfab8834c7cc52707c0c0bb9b8ba0'/>
<id>urn:sha1:a46f53695d1dfab8834c7cc52707c0c0bb9b8ba0</id>
<content type='text'>
</content>
</entry>
</feed>
