23 Commits

Author SHA1 Message Date
George Thomas
450d7e5240 Port from Tasty to Sydtest
There are some drawbacks:
- No properly lazy golden tests. This would in principle be nice when e.g. using `pretty-simple`.
- Because tests can be created dynamically, they can't be listed up front without running them. This presumably makes filtering slightly more annoying to use in practice.
- Terminal output is less compact than tasty, both horizontally and vertically. There appears to be no way to change this.
- We end up defining an orphan `Monoid (TestDefM '[] () ())` instance, to avoid changing much downstream code. Note though that this is not strictly necessary, and could potentially be contributed upstream.
- There's a warning about threads in GHCI which we can't seem to disable.
- The license forbids use in commercial projects without sponsoring. Thankfully that doesn't apply here.

Anyway, it's generally very impressive. It simplifies a few things for us, and will particularly help when we come to want to specify dependencies between tests.
2025-12-31 01:49:07 +00:00
George Thomas
415055dcc2 Allow output types to vary for different parts of same day
For now this applies to Haskell only, and it may turn out to be tricky for the Rust implementation.

In practice, the limitation hasn't turned out to be important, and we could even go the other way and use `Integer` everywhere. This does however at least help with debugging, as well as just being conceptually right.

The `nil` and `(/\)` functions are intended to be overloaded to work for other list-like things in a later commit, and from there we will investigate using `OverloadedLists` and `RebindableSyntax` to recover standard list syntax, although there are probably limitations due to `(:)` being special.
2025-12-16 16:15:11 +00:00
George Thomas
4b45590f37 Initialise day 10 2025-12-10 22:30:41 +00:00
George Thomas
ce70643476 Initialise day 9 2025-12-09 10:27:50 +00:00
George Thomas
a258b30eae Disable implicit prelude 2025-12-09 00:28:09 +00:00
George Thomas
e92cc2f0d3 Minor refactors 2025-12-08 22:59:50 +00:00
George Thomas
b0a191edb9 Solve day 8 part 1 2025-12-08 22:59:50 +00:00
George Thomas
cb86dad006 Initialise day 8 2025-12-08 13:41:19 +00:00
George Thomas
3412b04af1 Initialise day 7 2025-12-08 13:41:19 +00:00
George Thomas
f1db760379 Initialise day 6 2025-12-08 13:27:50 +00:00
George Thomas
371bddf748 Use custom prelude 2025-12-08 12:48:49 +00:00
George Thomas
ef731df494 Remove duplicate in dependency list 2025-12-08 11:53:14 +00:00
George Thomas
3742e1d254 Initialise day 5 2025-12-05 12:56:40 +00:00
George Thomas
ef342a1483 Refactor day 4 and add extra tests 2025-12-05 12:09:49 +00:00
George Thomas
dea25e3359 Add some useful dependencies 2025-12-04 11:14:31 +00:00
George Thomas
0844d4af2f Initialise day 4 2025-12-04 10:00:15 +00:00
George Thomas
b9e886c4e4 Solve day 3 part 2 2025-12-03 17:13:47 +00:00
George Thomas
2c1edfcfb6 Defer type errors 2025-12-03 15:56:56 +00:00
George Thomas
94c9838371 Add some useful extensions 2025-12-03 15:56:56 +00:00
George Thomas
b99bacc1e3 Initialise day 3 2025-12-03 11:18:04 +00:00
George Thomas
f0c2b8ca02 Move code out to separate modules 2025-12-02 15:19:11 +00:00
George Thomas
b7c17c2d32 Sort dependencies 2025-12-02 15:05:31 +00:00
George Thomas
3b093aac23 Use named directory for Haskell source
Makes way for other languages.
2025-12-02 14:59:15 +00:00