Most of my readers are probably familiar with procedural programming, object-oriented programming (OOP), and functional programming (FP). The majority of top programming languages on all of the language popularity charts (like TIOBE) support all three to some extent. Even if a programmer avoided one or more of those three paradigms like the plague, they’re likely at least aware of them and what th
The deadline for the logic book is coming up! I'm hoping to have it ready for early access by either the end of this week or early next week. During a break on Monday I saw this interesting problem on Math Stack Exchange: Suppose that at the beginning there is a blank document, and a letter "a" is written in it. In the following steps, only the three functions of "select all", "copy" and "paste" c
use ascent::ascent; ascent! { relation edge(i32, i32); relation path(i32, i32); path(x, y) <-- edge(x, y); path(x, z) <-- edge(x, y), path(y, z); } fn main() { let mut prog = AscentProgram::default(); prog.edge = vec![(1, 2), (2, 3)]; prog.run(); println!("path: {:?}", prog.path); } Features Lattices Ascent supports computing fixed points of user-defined lattices. The lattice keyword defines a lat
Picat is a research language intended to combine logic programming, imperative programming, and constraint solving. I originally learned it to help with vacation scheduling but soon discovered its planner module, which is one of the most fascinating programming models I’ve ever seen. First, a brief explanation of logic programming (LP). In imperative and functional programming, we take inputs and
October 3, 2023 Picat is my favorite new toolbox language logic programming + constraint solving + imperative programming (?!) = joy. I'm teaching a TLA+ workshop in two weeks! Register here, use the code C0MPUT3RTHINGS for 15% off. I always like to find new "toolbox languages". These are languages that can quickly be used to quickly solve a set of problems with just the base language and without
Logica is an open source declarative logic programming language for data manipulation. Logica extends syntax of logic programming for intuitive and efficient data manipulation. It compiles to SQL thus providing you access to the power of SQL engines with the convenience of logic programming syntax. Examples One may say that for programming languages like Python and Java functions are the basic bui
This blog is where I post up various half-baked ideas that I have. All PostsCategoriesGitHubTwitterRSS/Atom feedsSelected posts: The borrow checker withinEmpathy in open source: be gentle with each other In my previous post, I talked over the basics of how unification works and showed how that “mathematical version” winds up being expressed in chalk. I want to go a bit further now and extend that
I’ve had the pleasure in recent weeks of working on Chalk, the project that Niko’s been blogging about: Lowering Rust traits to logic Unification in Chalk, part 1 Unification in Chalk, part 2 The project has a few goals: Recast Rust’s trait system explicitly in terms of logic programming, by “lowering” Rust code into a kind of logic program we can then execute queries against. Provide a prototype
Version 3.9beta released (6/1/2025) Picat won two gold and one silver medals in XCSP competition and three silver medals in MiniZinc Challenge Picat team won the 2021 LP/CP programming contest News group Documentation: PDF | HTML Tutorials on PicatSAT (ICLP'24 | CP'19) Tutorial at AAAI'17 Editors for Picat: Emacs, VSC, and Geany WebIDE for Picat Picat team won Grand Prize at NYC Media Lab Summit H
# # A Taste of Logic Programming In Ruby In getting recently re-obsessed with Logic Programming and its relationship to the future of both programming and computation (with a healthy dose of obsession for its history, of course), I recalled coming across a few relevant Ruby libraries last year that I wanted to write up a bit after playing with them here and there. I was interested in seeing some s
Configuring laptops and servers In the past, walking the uneasy borderline of academia, I used to managed compute servers for my research group. New hardware was a rare godsend, configuring it by hand was natural. At 99designs, I've been privy to the opposite approach: machines should be disposable. This requires the entire setup of a new machine to be automated. At first I amassed shell scripts o
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く