summaryrefslogtreecommitdiff
path: root/src/Interpreter.hs
Commit message (Collapse)AuthorAge
* D2[Array] now has a Maybe instead of zero-size for zeroTom Smeding6 days
| | | | Remaining problem: 'add' in Compile doesn't use the D2 stuff
* Commutativity marker on fold1iTom Smeding12 days
|
* Complete accumulator revamp!Tom Smeding2025-03-15
|
* Much process with accumulator revampTom Smeding2025-03-14
|
* Compile: Fix right-precedence of (*)Tom Smeding2025-03-04
|
* test: Simplify and make it a bit fasterTom Smeding2025-02-28
|
* Add ext field to remaining AST constructorsTom Smeding2025-01-27
|
* Working argument accum mode (...)Tom Smeding2024-11-26
| | | | | | | | | | | | | | | 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) -> 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.
* WIP accum top-level argsTom Smeding2024-11-26
|
* Complete GMM implementationTom Smeding2024-11-10
|
* Some more primitive operatorsTom Smeding2024-11-09
|
* Maximum/minimumTom Smeding2024-11-09
|
* Custom derivativesTom Smeding2024-11-08
|
* Remove build1Tom Smeding2024-11-07
|
* Support EOneHotTom Smeding2024-11-05
|
* WIP EOneHotTom Smeding2024-11-04
|
* Fix IIxNil warningTom Smeding2024-10-26
|
* Make interpreter debug printing conditionalTom Smeding2024-10-26
|
* DebuggingTom Smeding2024-10-26
|
* Fix interpreter bugTom Smeding2024-10-22
|
* Less warningsTom Smeding2024-10-22
|
* Differentiate ReplicateTom Smeding2024-10-22
|
* TestsTom Smeding2024-10-21
|
* Reverse-by-forward, and checking neural (it's wrong)Tom Smeding2024-10-01
|
* Test neuralTom Smeding2024-09-25
|
* Interpreter typechecks, at the cost of compositionality of RepAcTom Smeding2024-09-22
|
* StuffTom Smeding2024-09-22
|
* Some hackingTom Smeding2024-09-22
|
* A little interpreter accum progressTom Smeding2024-09-16
|
* WIP Accum stuffTom Smeding2024-09-15
|
* WIP better zero/plus, fixing Accum (...)Tom Smeding2024-09-13
| | | | | | | | | | | | | The accumulator implementation was wrong because it forgot (in accumAdd) to take into account that values may be variably-sized. Furthermore, it was also complexity-inefficient because it did not build up a sparse value. Thus let's go for the Haskell-interpreter-equivalent of what a real, fast, compiled implementation would do: just a tree with mutable variables. In practice one can decide to indeed flatten parts of that tree, i.e. using a tree representation for nested pairs is bad, but that should have been done _before_ execution and for _all_ occurrences of that type fragment, not live at runtime by the accumulator implementation.
* Interpreter, some operationsTom Smeding2024-09-12
|
* Finish Accum implementationTom Smeding2024-09-11
|
* WIP interpreterTom Smeding2024-09-06