miniKanren is a family of programming languages for relational programming. As relations are bidirectional, if miniKanren is given an expression and a desired output, miniKanren can run the expression "backward", finding all possible inputs to the expression that produce the desired output. This bidirectional behavior allows the user to constrain both the input to the program and the result of the program simultaneously. miniKanren performs an interleaved search which will eventually find any solution that exists, even if any one branch of the search tree is infinitely long and contains no solutions. If no solution exists, miniKanren may search forever if the search tree is infinite. An example of miniKanren code is evalo, a relational goal that relates expressions to the values that they evaluate to. When evalo is called in miniKanren like so: (evalo q q), it will generate quines, that is, expressions q that when run will evaluate to themselves. The book The Reasoned Schemer uses miniKanren to demonstrate relational programming, and provides a complete implementation in Scheme. The core of the language fits on two printed pages. The Scheme implementation of miniKanren is designed to be easily understood, modified, and extended. αleanTAP is a program written in αKanren, an extension of miniKanren for . Given a theorem, it can find a proof, making it a theorem-prover. Given a proof, it can find the theorem, making it a theorem-checker. Given part of a proof and part of a theorem, it will fill in the missing parts of the proof and the theorem, making it a theorem-explorer. There are implementations of miniKanren in Haskell, Racket, Ruby, Clojure, JavaScript, Scala, Swift, Dart and Python. The canonical implementation is an embedded language in Scheme. The Clojure core.logic library was inspired by miniKanren. The name kanren comes from a Japanese word (関連) meaning "relation". (Wikipedia).
This levitron manufactured by my friend İzzet Özgöçmen. We enjoyed playing with it.
From playlist Izzet Özgöçmen
I'm putting this here for a talk I'm giving next week. It is how we pump our nanoparticle samples for optical measurements. I'm sure I could write a fluids problem about it!
From playlist Off Topic
A Liter Of Light *Official Version*
Check out this mini-docu that we shot! http://www.playwiththejunglegym.com/
From playlist Amazing Stuff
Defining Microservices | SHORTS
What are microservices? What is microservice architecture for and why are they more complex than they look on the surface? In this #shorts episode, Dave Farley give his definition of microservices. For a fuller exploration of Microservices, see Dave's video "The Problem with Microservices
From playlist Microservices
This is a video I have been wanting to make for some time, in which I discuss what the quaternions are, as mathematical objects, and how we do calculations with them. In particular, we will see how the fundamental equation of the quaternions i^2=j^2=k^2=ijk=-1 easily generates the rule for
From playlist Quaternions
Mini Solar Powered Radio Pack -Part 1
Just a little portable solar powered case for a radio...
From playlist Solar Powered Projects
Test for a Difference in Means, Independent Samples, Minitab, Data in Two Columns
This demonstrates how to conduct a hypothesis test for a difference in means between independent samples. It uses Minitab with raw data and each sample is in its own column. This demonstration corresponds to Introduction to Statistics, Think & Do, by Scott Stevens (www.StevensStats.com)
From playlist Minitab and Minitab Express Demonstrations
A simple gears mechanism moving a frame structure. Used in robot toys. Free 3D model at https://skfb.ly/o6X7q.
From playlist Walking Machines
Clojure Conj 2012 - Challenges for Logic Programming
Challenges for Logic Programming by: Steve Miner The core.logic library (a port of miniKANREN) has sparked an interest in logic programming among Clojure users. Back in the '80s, logic programming inspired the Japanese Fifth Generation Computer Systems Project, which was poised to leap pa
From playlist Clojure Conf 2012