3 ms·
Warren Abstract Machine
- vilhelm_s 7y ago"[S]econd, we couldn't understand how the WAM worked. We read all the papers but the explanations seemed to be written only for people who already understood how the thing worked." ---Joe Armstrong (from "A History of Erlang") This has been my experience also!
- agumonkey 7y agoso monadic tutorials had prior art..
- peter_d_sherman 7y agoRelated: http://wambook.sourceforge.net/ http://wambook.sourceforge.net/ http://wambook.sourceforge.net/wambook.pdf http://wambook.sourceforge.net/wambook.pdf
- jfengel 7y agoMy favorite bit of WAM trivia: The Warren Abstract Machine is named after David H. D. Warren. The XSB Prolog engine, built using the Warren Abstract Machine, was run by David S. Warren, who was totally unrelated. Understanding the two at once was made more difficult by the name confusion.
- mhewett 7y agoThe Warren Abstract Machine has a bunch of Prolog-related opcodes mixed in with a bunch of opcodes for maintaining linked lists and other data structures. Once you figure that out the WAM becomes slightly easier to understand.
- falsissime 7y agoThe most difficult to understand aspect of the WAM are its put_unsafe instructions which permits WAM's incredibly simple LCO. You can only appreciate its ingenuity after you had struggled with last call optimizations in engines like the ZIP or the VAM where you need several passes over the environments.
- 6gvONxR4sf7o 7y agoHas anyone here used logic programming at work? I'm curious where it pops up in industry as I haven't encountered it myself yet.
- pag 7y agoDatalog and variants of it come up a bunch in program analysis and software security. For example, GitHub/Microsoft acquired a company, Semmle [1], that has an object-oriented query language that compiles down into Datalog, and can be used to query source code in interesting ways. Souffle [2] comes up in static analysis as well, and is used in systems such as Doop [3]. A kind of predecessor to Doop is bddbddb [4]. Souufle has been used in Ddisasm [5] for disassembling binaries. XSB Prolog has been used in OOAnalyzer [6] for inferring class hierarchies and virtual tables in binaries as well. I myself spend some time working on datalog compilation for program analysis and decompilation :-) [1] https://semmle.com https://semmle.com [2] https://souffle-lang.github.io/index.html https://souffle-lang.github.io/index.html [3] https://bitbucket.org/yanniss/doop/src/master https://bitbucket.org/yanniss/doop/src/master [4] https://suif.stanford.edu/bddbddb https://suif.stanford.edu/bddbddb [5] https://github.com/GrammaTech/ddisasm https://github.com/GrammaTech/ddisasm [6] https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=539759 https://resources.sei.cmu.edu/library/asset-view.cfm?assetid...
- pag 7y agoDatalog also comes up in cluster management / provisioning. For example: Differential Datalog [1]. [1] https://github.com/vmware/differential-datalog https://github.com/vmware/differential-datalog
- pag 7y agoAnd lets not forget that Rust's borrow checker is implemented with Datalog [1]. [1] https://smallcultfollowing.com/babysteps/blog/2018/04/27/an-alias-based-formulation-of-the-borrow-checker/ https://smallcultfollowing.com/babysteps/blog/2018/04/27/an-...
- whitten 7y agoI have a buddy who works with Prolog for a "major credit analysis firm" (his words). His code is basically fraud detection and credit scores (i.e. suitability for receiving a loan that you will pay off) On a different note, does anyone know if WAM (or any logic programming advanced Instruction Set Archictecture) has been implemented in hardware, such as VHDL etc ?