free-arrow
aGdaREP
free-arrow | aGdaREP | |
---|---|---|
2 | 1 | |
17 | 31 | |
- | - | |
2.9 | 10.0 | |
2 months ago | over 3 years ago | |
Scala | Agda | |
- | - |
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.
free-arrow
-
The Deep Link Equating Math Proofs and Computer Programs
my first thought was something something dependent types (Idris, Agda), but it also sounds like TS-like structural typing with a Rust-like Result type. proving that every incoming message is either parsed correctly or we return an error seems to be the basic building block. and then every transformation should be other pure functions.
thought I guess you mean something more top-downish? for that there's "program interpretation" ( https://github.com/AdrielC/free-arrow )
plus something very heavy-handed https://deepai.org/publication/a-coq-based-synthesis-of-scal...
-
Pure Functional Stream processing in Scala: Cats and Akka – Part 1
Interesting post, although the use of `cats.IO` feels a little shoehorned. I've found some nice cats/akka synergy by abstracting over flows using a `cats.arrow.Arrow` instance for `akka.stream.scaladsl.Flow`. That might be just as shoehorned though, since I haven't yet worked out whether akkas `Flow` forms a lawful Arrow
aGdaREP
-
The Deep Link Equating Math Proofs and Computer Programs
I've been dabbling with Idris and agda and coq. I think I'm pretty much settling on agda, because I can appeal to Haskell for help. It's tough finding things that aren't just proofs, actually running a program isn't hard, there just doesn't seem to be many people who do it. I've got some toy projects in mind, and I'm going to lean hard on https://github.com/gallais/aGdaREP (grep in agda). I can't tell you if it's ten times harder - that seems high. It's different, sure. I'm having a tougher time than with, say, prolog. But most of the bumps and bruises are from lack of guidance around, uh, stuff.
So given that context, it doesn't sound to tough to add a cost to the type for each operation, function call, whatever, and have the type checker count up the cost of each call. So you'd have real proof that you're under some threshold. I wouldn't put the agda runtime on a flight control computer. But I think I could write a compiler, now, For like a microcontroller that would count up (or spend time budget, doesn't matter).
A more sophisticated computer would be way way harder, and be resource efficient. But if you modeled it as "everything's a cache miss" and don't mind a bunch of no-ops all the time, that would be a pretty straightforward adaptation of the microcontroller approach.
What are some alternatives?
zio-prelude - A lightweight, distinctly Scala take on functional abstractions, with tight ZIO integration
ZIO - ZIO — A type-safe, composable library for async and concurrent programming in Scala
pragmatapro - PragmataPro font is designed to help pros to work better
Reactive Streams - Reactive Streams Specification for the JVM