the-power-of-prolog VS Co-dfns

Compare the-power-of-prolog vs Co-dfns and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
the-power-of-prolog Co-dfns
23 19
1,164 655
- 2.4%
7.4 9.6
16 days ago 8 days ago
HTML APL
- GNU Affero General Public License v3.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

the-power-of-prolog

Posts with mentions or reviews of the-power-of-prolog. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-01.
  • The Power of Prolog
    1 project | news.ycombinator.com | 31 Jan 2024
  • Advent of Code 2023 is nigh
    19 projects | news.ycombinator.com | 1 Dec 2023
  • Using Prolog in Windows NT Network Configuration (1996)
    5 projects | news.ycombinator.com | 21 Jul 2023
    Prolog is excellent for bikeshedding, in fact that might be its strongest axis. It starts with everything you get in a normal language such as naming things, indentation, functional purity vs side effects, where to break code into different files and builds on that with having your names try to make sense in declarative, relational, logical and imperative contexts, having your predicates (functions) usable in all modes - and then performant in all modes - having your code be deterministic, and then deterministic in all modes. Being 50 years old there are five decades of learning "idiomatic Prolog" ideas to choose from, and five decades of footguns pointing at your two feet; it has tabling, label(l)ing, SLD and SLG resolution to choose from. Built in constraint solvers are excellent at tempting you into thinking your problem will be well solved by the constraint solvers (it won't be, you idiot, why did you think that was a constraint problem?), two different kinds of arithmetic - one which works but is bad and one which mostly works on integers but clashes with the Prolog solver - and enough metaprogramming that you can build castles in the sky which are very hard to debug instead of real castles. But wait, there's more! Declarative context grammars let you add the fun of left-recursive parsing problems to all your tasks, while attributed variables allow the Prolog engine to break your code behind the scenes in new and interesting ways, plenty of special syntax not to be sneezed at (-->; [_|[]] {}\[]>>() \X^+() =.. #<==> atchoo (bless you)), a delightful deep-rooted schism between text as linked lists of character codes or text as linked lists of character atoms, and always the ISO-Standard-Sword of Damocles hanging over your head as you look at the vast array of slightly-incompatible implementations with no widely accepted CPython-like-dominant-default.

    Somewhere hiding in there is a language with enough flexibility and metaprogramming to let your meat brain stretch as far as you want, enough cyborg attachments to augment you beyond plain human, enough spells and rituals to conjour tentacled seamonsters with excellent logic ability from the cold Atlantic deeps to intimidate your problem into submission.

    Which you, dear programmer, can learn to wield up to the advanced level of a toddler in a machine shop in a mere couple of handfuls of long years! Expertise may take a few lifetimes longer - in the meantime have you noticed your code isn't pure, doesn't work in all modes, isn't performant in several modes, isn't using the preferred idiom style, is non-deterministic, can't be used to generate as well as test, falls into a left-recursive endless search after the first result, isn't compatible with other Prolog Systems, and your predicates are poorly named and you use the builtin database which is temptingly convenient but absolutely verboten? Plenty for you to be getting on with, back to the drawing boar...bikeshed with you.

    And, cut! No, don't cut; OK, green cuts but not red cuts and I hope you aren't colourblind. Next up, coroutines, freeze, PEngines, and the second 90%.

    Visit https://www.metalevel.at/prolog and marvel as a master deftly disecting problems, in the same way you marvel at Peter Norvig's Pytudes https://github.com/norvig/pytudes , and sob as the wonders turn to clay in your ordinary hands. Luckily it has a squeaky little brute force searcher, dutifully headbutting every wall as it explores all the corners of your problem on its eventual way to an answer, which you can always rely on. And with that it's almost like any other high level mostly-interpreted dynamic programming / scripting language.

  • ELI5 the difference between logic, machine learning, and artificial intelligence?
    1 project | /r/datascience | 23 May 2023
    There is also AI that isn't machine learning. One could use formal logic to state rules and facts about the world and infer things from that. This sounds attractive but the main issue is that you need to build and maintain all of this knowledge. Most oldschool AI falls into this category. There's also fun programming languages like Prolog that are deep into this school: https://www.metalevel.at/prolog
  • Why did Prolog lose steam? (2010)
    10 projects | news.ycombinator.com | 18 Apr 2023
    There's a nice book[1][2] about Prolog, with modern characteristics. Moreover, there are things like ProbLog[3] and DeepProbLog[4] that allow you to use probabilistic reasoning and power of machine learning. I am personally looking forward for Scryer Prolog[5] to achieve its goals.

    [1] https://www.metalevel.at/prolog

    [2] https://github.com/triska/the-power-of-prolog

    [3] https://github.com/ML-KULeuven/problog

    [4] https://github.com/ML-KULeuven/deepproblog

    [5] https://github.com/mthom/scryer-prolog

  • `tar` creator/extractor in ~100 lines of Prolog
    3 projects | news.ycombinator.com | 18 Jan 2023
    I had the same troubles until I encountered Markus Triska's modern perspective on revitalizing Prolog: https://www.metalevel.at/prolog.
  • Prolog at Work
    3 projects | news.ycombinator.com | 31 Dec 2022
    The Power of Prolog [0] is a fantastic blog/video series covering everything from basic syntax, theoretical basis, modern features and idiomatic constructs.

    I highly recommend it if you want to get the gist of Prolog and its modern features.

    If you want a tour of Prolog, you can watch the video with that name [1].

    [0]: https://www.metalevel.at/prolog

    [1]: https://youtu.be/8XUutFBbUrg

  • Aspects of Production/Professional Prolog
    2 projects | /r/prolog | 9 Dec 2022
    I've gone through The Art of Prolog, most of The Power of Prolog, and a good chunk of the P-99 problems, and I have to say I'm simultaneously fascinated by and sceptical of Prolog. For some problem domains, implicit search is a very desirable property, and I can definitely see Prolog shining in that case. There are also many desirable properties and possibilities that are often reiterated, but concrete examples of how they would work are often missing. It comes down to: how does "production Prolog" look? A talk on Strange Loop by Michael Hendricks on exactly that topic was really helpful (especially w.r.t. some useful tools and libraries: func and yall are really great, and I still need to check mavis), but it still leaves me wondering on a couple of things.
  • How to best approach learning prolog?
    1 project | /r/prolog | 13 Jul 2022
    Pretty much every Prolog book is quite good, but if you have the money or a local library with a copy, I really like Programming in Prolog by Clocksin, or Art of Prolog by Stering and Shapiro. If you want to follow a web resource, the standard suggestion is Markus Triska's The Power of Prolog.
  • Prolog的力量 (The Power of Prolog)
    1 project | /r/hnzh | 7 Jun 2022

Co-dfns

Posts with mentions or reviews of Co-dfns. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-24.
  • Tacit Programming
    3 projects | news.ycombinator.com | 24 Feb 2024
    And if anyone wants an absolute masterclass in tacit programming, have a look at Aaron's Co-dfns compiler. The README has extensive reference material. https://github.com/Co-dfns/Co-dfns/
  • YAML Parser for Dyalog APL
    4 projects | news.ycombinator.com | 8 Jan 2024
    I don't put a lot of stock in the "write-only" accusation. I think it's mostly used by those who don't know APL because, first, it's clever, and second, they can't read the code. However, if I remember I implemented something in J 10 years ago, I will definitely dig out the code because that's the fastest way by far for me to remember how it works.

    This project specifically looks to be done in a flat array style similar to Co-dfns[0]. It's not a very common way to use APL. However, I've maintained an array-based compiler [1] for several years, and don't find that reading is a particular difficulty. Debugging is significantly easier than a scalar compiler, because the computation works on arrays drawn from the entire source code, and it's easy to inspect these and figure out what doesn't match expectations. I wrote most of [2] using a more traditional compiler architecture and it's easier to write and extend but feels about the same for reading and small tweaks. See also my review [3] of the denser compiler and precursor Co-dfns.

    As for being read by others, short snippets are definitely fine. Taking some from the last week or so in the APL Farm, {⍵÷⍨+/|-/¯9 ¯11+.○?2⍵2⍴0} and {(⍸⍣¯1+\⎕IO,⍺)⊂[⎕IO]⍵} seemed to be easily understood. Forum links at [4]; the APL Orchard is viewable without signup and tends to have a lot of code discussion. There are APL codebases with many programmers, but they tend to be very verbose with long names. Something like the YAML parser here with no comments and single-letter names would be hard to get into. I can recognize, say, that c⌿¨⍨←(∨⍀∧∨⍀U⊖)∘(~⊢∊LF⍪WS⍨)¨c trims leading and trailing whitespace from each string in a few seconds, but in other places there are a lot of magic numbers so I get the "what" but not the "why". Eh, as I look over it things are starting to make sense, could probably get through this in an hour or so. But a lot of APLers don't have experience with the patterns used here.

    [0] https://github.com/Co-dfns/Co-dfns

    [1] https://github.com/mlochbaum/BQN/blob/master/src/c.bqn

    [2] https://github.com/mlochbaum/Singeli/blob/master/singeli.bqn

    [3] https://mlochbaum.github.io/BQN/implementation/codfns.html

    [4] https://aplwiki.com/wiki/Chat_rooms_and_forums

  • HVM updates: simplifications, finally runs on GPUs, 80x speedup on RTX 4090
    2 projects | news.ycombinator.com | 7 Oct 2023
    This always seemed like a very interesting project; we need to get to the point where, if things can run in parallel, they must run in parallel to make software more efficient on modern cpu/gpu.

    It won't attract funds, I guess, but it would be far more trivial to make this work with an APL or a Lisp/Scheme. There already is great research for APL[0] and looking at the syntax of HVM-core it seems it is rather easy to knock up a CL DSL. If only there were more hours in a day.

    [0] https://github.com/Co-dfns/Co-dfns

  • Co-Dfns
    1 project | news.ycombinator.com | 31 Mar 2023
  • APL: An Array Oriented Programming Language (2018)
    10 projects | news.ycombinator.com | 30 Mar 2023
    There are many styles of APL, not just due to its long history, but also because APL is somewhat agnostic to architecture paradigms. You can see heavily imperative code with explicit branching all over the place, strongly functional-style with lots of small functions, even object-oriented style.

    However, given the aesthetic that you express, I think you might like https://github.com/Co-dfns/Co-dfns/. This is hands-down my favorite kind of APL, in which the data flow literally follows the linear code flow.

  • Franz Inc. has moved the whole Allegro CL IDE to a browser-based user interface. Incl. all their Lisp development tools. One can check that out with their Allegro CL Express Edition.
    2 projects | /r/Common_Lisp | 27 Mar 2023
    Which is, as far as I know, unused. (Similarly the gpu compiler.)
  • What would make you try a new language?
    8 projects | /r/ProgrammingLanguages | 29 Jan 2023
    You might be familiar with iKe (grahics), SpecialK (GLSL) and Co-dfns. Also, I am working on bastardized APL for GPU – Fluent. Fluent 1 had backend implemented through Apple Metal Performance Shaders Graph and Fluent 2 has TensorFlowJS backend for now. I care more about having auto differentiation in the lang than running on GPU and do graphics, to be honest.
  • APL9 from Outer Space
    1 project | news.ycombinator.com | 30 Nov 2022
    Not that I am aware of. I think the closest project is co-dfns[1] which is being developed by Aaron Hsu (he did a presentation as well). It aims to compile a subset of APL so that it can be executed on GPUs for instance, possibly with other backends. I imagine an XLA backend could be possible there.

    [1] https://github.com/Co-dfns/Co-dfns

  • Who is researching array languages these days?
    5 projects | /r/Compilers | 15 Oct 2022
    Aaron hsu did his dissertation on this topic (compiler, thesis), at indiana university in the us.
  • Researchers Develop Transistor-Free Compute-in-Memory Architecture
    2 projects | news.ycombinator.com | 14 Oct 2022

What are some alternatives?

When comparing the-power-of-prolog and Co-dfns you can also consider the following projects:

pyswip - PySwip is a Python - SWI-Prolog bridge enabling to query SWI-Prolog in your Python programs. It features an (incomplete) SWI-Prolog foreign language interface, a utility class that makes it easy querying with Prolog and also a Pythonic interface.

BQN - An APL-like programming language. Self-hosted!

swipl-wasm - Run SWI-Prolog in your browser using WebAssemply

chibicc - A small C compiler

guile-log

tigerbeetle - A distributed financial accounting database designed for mission critical safety and performance. [Moved to: https://github.com/tigerbeetledb/tigerbeetle]

erlog - Prolog interpreter in and for Erlang

ngn-apl - An APL interpreter written in JavaScript. Runs in a browser or NodeJS.

logtalk3 - Logtalk - declarative object-oriented logic programming language

uemacs - Random version of microemacs with my private modificatons

swipl-devel - SWI-Prolog Main development repository

april - The APL programming language (a subset thereof) compiling to Common Lisp.