Libraryless. Click here for Pure Java version (916L/6K/22K).
!752 static class Var extends Lisp { Lisp instance; *(S name) { super(name); instance = this; } } static boolean unify(Lisp thiz, Lisp t) { if (thiz instanceof Var) { Var v = cast thiz; if (v.instance != v) return unify(v.instance, t); //Trail::Push(v); v.instance = t; return true; } return unify2(t, thiz); } static boolean unify2(Lisp thiz, Lisp t) { if (thiz instanceof Var) return unify(thiz, t); int arity = thiz.size(); if (neq(thiz.head, t.head) || arity != t.size()) return false; for (int i = 0; i < arity; i++) if (!unify(thiz.get(i), t.get(i))) return false; return true; } p { Var x = new Var("X"); print(x + " = " + x.instance); print(unify(x, lisp("hello"))); print(x + " = " + x.instance); }
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1002818 | 
| Snippet name: | Test unifiable variables | 
| Eternal ID of this version: | #1002818/1 | 
| Text MD5: | f8646792cfb6cfefb2c79425c88c7730 | 
| Transpilation MD5: | c7c61322a624538ae32da77230fb753c | 
| Author: | stefan | 
| Category: | javax | 
| Type: | JavaX source code | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2016-02-27 02:43:19 | 
| Source code size: | 844 bytes / 43 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 814 / 926 | 
| Referenced in: | [show references] |