summaryrefslogtreecommitdiff
path: root/src/AST
Commit message (Collapse)AuthorAge
* Pass around an accumMap (but it's empty still)Tom Smeding3 days
|
* Pretty: fix printing of EMaybeTom Smeding4 days
|
* D2[Array] now has a Maybe instead of zero-size for zeroTom Smeding5 days
| | | | Remaining problem: 'add' in Compile doesn't use the D2 stuff
* Commutativity marker on fold1iTom Smeding11 days
|
* Compile EAccumTom Smeding14 days
|
* Much process with accumulator revampTom Smeding2025-03-14
|
* WIP revamp accumulator projection type reprTom Smeding2025-03-14
| | | | | | | I stopped working on this because I realised that having sparse products (and coproducts, prehaps) everywhere is a very bad idea in general, and that we need to fix that first before really being able to do anything else productive with performance.
* Clean up code organisation a littleTom Smeding2025-03-09
|
* pretty: Print x value for (!)Tom Smeding2025-03-07
|
* pprintExprTom Smeding2025-03-07
|
* Compile: Implement EWith (TODO EAccum)Tom Smeding2025-03-05
| | | | That's going to be a mess
* Fix ppParen in pretty of EWithTom Smeding2025-03-04
|
* Fix some pretty-printingTom Smeding2025-03-01
|
* UnMonoid: Properly recurseTom Smeding2025-02-25
|
* Pretty: Allow colouring exts (currently not)Tom Smeding2025-02-25
|
* Compile: Emit structs in proper orderTom Smeding2025-02-25
|
* Pretty-printer that supports extension fieldsTom Smeding2025-01-28
|
* Add ext field to remaining AST constructorsTom Smeding2025-01-27
|
* UnMonoidTom Smeding2024-12-06
|
* WIP UnMonoid (to be used for compiling to C)Tom Smeding2024-12-06
|
* 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.
* Test GMM; it failsTom Smeding2024-11-10
|
* Complete GMM implementationTom Smeding2024-11-10
|
* Some more primitive operatorsTom Smeding2024-11-09
|
* WIP maximum/minimumTom Smeding2024-11-08
|
* Custom derivativesTom Smeding2024-11-08
|
* WIP custom derivativesTom Smeding2024-11-08
|
* Remove build1Tom Smeding2024-11-07
|
* WIP EOneHotTom Smeding2024-11-04
|
* WIP preserve only subset of D0 bindings in dual (...)Tom Smeding2024-10-27
| | | | | | | | | | | | | | | The point of this is to ensure that when an expression occurs in a Build, then the parts of D0 that are only there to make sharing work out for D1 are not laboriously taped in an array and preserved for D2, only for D2 to ignore them. However, while the subtape machinery is a good first step, this is not everything: the current Build translation makes a Build for the (elementwise) tape and separately a build for the primal. Because the primal _does_ generally need the subtaped-away stuff, we can't just not tape those. TODO: figure out how to resolve this / what the next step is.
* Fix {} usage in pretty-printing of ELetTom Smeding2024-10-26
|
* DebuggingTom Smeding2024-10-26
|
* Fix interpreter bugTom 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
|
* Add some missing casesTom Smeding2024-09-22
|
* 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.
* Towards neuralTom Smeding2024-09-12
|
* Interpreter, some operationsTom Smeding2024-09-12
|
* A simple embedded frontendTom Smeding2024-09-05
|
* Generic accumulatorsTom Smeding2024-09-05
|
* WIPTom Smeding2024-09-04
|
* Inching towards drev of buildTom Smeding2024-09-03
|
* autoWeak: Handle closed source environmentsTom Smeding2024-09-03
|
* accumPromoteTom Smeding2024-09-02
|
* WSwap needs no env singletonTom Smeding2024-09-02
|
* Code cleanup, and OverloadedLabels for LSegTom Smeding2024-09-02
|
* Autoweak!Tom Smeding2024-09-02
|
* WIP autoWeakTom Smeding2024-09-02
|