scryer-prolog
advent-of-code
scryer-prolog | advent-of-code | |
---|---|---|
42 | 4 | |
1,901 | 0 | |
- | - | |
9.7 | 9.3 | |
10 days ago | 4 months ago | |
Rust | C++ | |
BSD 3-clause "New" or "Revised" License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
scryer-prolog
-
The Shen Programming Language
thank you! the scryer community deserves much of the credit too. everyone is welcome and encouraged to join us at https://github.com/mthom/scryer-prolog! some exciting plans in the pipe
- Appreciating Clpz_t/2
- Advent of Code 2023 is nigh
- Scryer Prolog version 0.9.3 is out
- Announcing Basic WebAssembly support in Scryer Prolog
- Basic WebAssembly Support in Scryer Prolog
- Scryer-Prolog 0.9.2
- Release v1.1.0 of PostgreSQL-Prolog
-
Djot is a light markup syntax
Djot is the markup syntax that is used for the documentation of Scryer Prolog, using a parser written in Prolog:
https://github.com/aarroyoc/djota
It works well so far. One of the few limitations I noticed so far pertains to the formatting of tables. For instance, consider the table used in library(format) to describe control sequences:
https://github.com/mthom/scryer-prolog/blob/b0566e41503a6c8d...
It contains several entries that span multiple lines, yet are meant to denote only a single row of the table, such as:
% | `~Nr` | where N is an integer between 2 and 36: format the |
- The First Annual Scryer Prolog Meetup
advent-of-code
-
-❄️- 2023 Day 10 Solutions -❄️-
language c++
-
Advent of Code 2023 is nigh
I did 2016 in Haskell and 2018 in Rust. Haskell was kind of a pain since I had to do a ton of tail recursion. Rust would be a lot easier since it allows you to be imperative when you need to.
And I definitely only used a tiny subset of either language because I wanted to get the solution as quickly as possible.
[1] https://github.com/xdavidliu/advent-of-code/tree/main/2016
-
Why Haskell Is Interesting?
So I came to Haskell from Scheme background, so the tail recursion was actually natural to me. In fact, about a month ago I did 2016 Advent of Code in Haskell, and toward the end, I felt like I was abusing tail recursion [1] to write iterative algorithms like breadth-first-search by essentially "repeatedly consing on to the params of tails calls", as Lispers would probably call it.
The whole I'm wondering if I'm just writing Haskell "with a heavy Scheme accent", since I see others' Haskell code make extensive use of state monads (which I still haven't attempted to understand), and I also found others' using way more of the monadic / applicative operators like "bind", etc than I have.
I found the hard part of Haskell not the iteration, which from tail recursion was completely natural and straightforward, but rather worrying about the efficiency of the "repeatedly consing" part. For things like stacks, the cost is O(1), but for things like Data.Array, I wasn't sure how much shared structure there was; I mean it could totally be copying the entire array every time I "mutate" an element (not really, since it was still sort of "consing" onto the old array and not actually mutating it).
[1] https://github.com/xdavidliu/advent-of-code/blob/main/2016/d...
What are some alternatives?
swipl-devel - SWI-Prolog Main development repository
kino_aoc - A helper for Advent of Code (a smart cell) for Elixir Livebook
logica - Logica is a logic programming language that compiles to SQL. It runs on Google BigQuery, PostgreSQL and SQLite.
fs_playground - F# Playground
differential-datalog - DDlog is a programming language for incremental computation. It is well suited for writing programs that continuously update their output in response to input changes. A DDlog programmer does not write incremental algorithms; instead they specify the desired input-output mapping in a declarative manner.
advent_of_code_ex - Advent of Code solutions in Elixir, and a bunch of musings on them.
materialize - The data warehouse for operational workloads.
the-power-of-prolog - Introduction to modern Prolog
tau-prolog - An open source Prolog interpreter in JavaScript
adventofcode - My Advent of code challenges
prolog - The only reasonable scripting engine for Go.
advent2023 - scribblings at advent of code 2023