Skip to content

Instantly share code, notes, and snippets.

@jirkamarsik
jirkamarsik / graaljs.patch
Created July 23, 2019 11:50
Porting Talkyard from Nashorn to GraalVM JavaScript
diff --git a/app/debiki/Nashorn.scala b/app/debiki/Nashorn.scala
index 13f9f2eb4..bdc2604a7 100644
--- a/app/debiki/Nashorn.scala
+++ b/app/debiki/Nashorn.scala
@@ -22,8 +22,7 @@ import java.io.{BufferedWriter, FileWriter}
import com.debiki.core._
import com.debiki.core.Prelude._
import java.{io => jio}
-
-import javax.{script => js}
@jirkamarsik
jirkamarsik / selectsort
Created July 24, 2016 19:16
Select sort in Human Resource Machine assembly
-- HUMAN RESOURCE MACHINE PROGRAM --
COMMENT 4
COPYFROM 24
COPYTO 19
BUMPUP 19
BUMPUP 19
COMMENT 3
a:
COPYFROM 24
@jirkamarsik
jirkamarsik / bubblesort
Created July 24, 2016 19:10
Bubblesort in Human Resource Machine assembly
-- HUMAN RESOURCE MACHINE PROGRAM --
COMMENT 0
a:
COPYFROM 24
COPYTO 20
COPYFROM 24
COPYTO 23
b:
c:
@jirkamarsik
jirkamarsik / heapsort
Created July 24, 2016 18:47
Heapsort in Human Resource Machine assembly.
-- HUMAN RESOURCE MACHINE PROGRAM --
COMMENT 4
COPYFROM 24
COPYTO 19
BUMPUP 19
BUMPUP 19
COMMENT 3
a:
COPYFROM 24
@jirkamarsik
jirkamarsik / Main.purs
Created August 13, 2015 22:59
Testing the patch function in purescript-virtual-dom
module Main where
import Prelude
import Data.DOM.Simple.Document
import Data.DOM.Simple.Element
import Data.DOM.Simple.Window
import qualified VirtualDOM as VD
import qualified VirtualDOM.VTree as VT
foreign import isoTS :: DOM.Node -> Data.DOM.Simple.Types.HTMLElement
@jirkamarsik
jirkamarsik / dynamic_scoping3.clj
Created December 19, 2012 14:00
Collecting traces from algorithms using dynamic Vars, second version.
(def ^:dynamic *fix-tree-adjunctions*)
(defn record-adjunct
"Records an adjunction performed within fix-tree."
[phrase adjunct]
(if (thread-bound? #'*fix-tree-adjunctions*)
(set! *fix-tree-adjunctions* (conj *fix-tree-adjunctions*
{:phrase phrase
:adjunct adjunct}))))
@jirkamarsik
jirkamarsik / dynamic_scoping2.clj
Created December 19, 2012 13:32
Collecting traces from algorithms using dynamic Vars, first version.
(def ^:dynamic *fix-tree-adjunctions*)
(def ^:dynamic *fix-tree-current-name*)
(defn record-adjunct
"Records an adjunction performed within fix-tree."
[phrase adjunct]
(if (thread-bound? #'*fix-tree-adjunctions*)
(let [record {:phrase phrase
:adjunct adjunct}
record (if (thread-bound? #'*fix-tree-current-name*)
@jirkamarsik
jirkamarsik / dynamic_scoping.clj
Created December 18, 2012 16:25
Dynamic scoping in action!
(def ^:dynamic *current-tree-name*)
(defn record-adjunct
"Records an adjunction performed by our rules."
[phrase adjunct]
(swap! adjunctions conj {:name *current-tree-name*
:phrase phrase
:adjunct adjunct}))
(def fixed-trees
(defn record-adjunct
"Records an adjunction performed by our rules."
[phrase adjunct]
(swap! adjunctions conj {:name name
:phrase phrase
:adjunct adjunct}))
(def fixed-trees
"A map from tree filenames to their fixed versions."
(into {} (for [[name tree] trees]
@jirkamarsik
jirkamarsik / transformo.clj
Created December 18, 2012 00:49
A macro for collecting all predicates of a given class from my namespace and wrapping them in a disjunction.
(defmacro transformo
"Is satisfied when out-tree is a normalized version of the in-tree
node. Tries to use any goal annotated with ::rule."
[in-tree out-tree]
`(conde ~@(for [[sym var] (ns-interns *ns*)
:when (::rule (meta var))]
[(list sym in-tree out-tree)])))