Skip to content

Instantly share code, notes, and snippets.

Avatar

Eero Helenius eerohele

View GitHub Profile
View maybe-stupid-repl.clj
(def eval-context (atom {}))
(defn handle
"Imaginary message handler that sets the namespace received out of band."
[ns]
(swap! eval-context assoc #'*ns* (find-ns ns)))
(defn repl
[]
(loop []
View bytecode.clj
(ns tutkain.bytecode
(:require [clojure.java.io :as io]
[tutkain.backchannel :refer [handle respond-to]])
(:import (java.io PrintWriter StringWriter)
(java.util.spi ToolProvider)
(java.nio.file Files)
(java.nio.file.attribute FileAttribute)))
(set! *warn-on-reflection* true)
@eerohele
eerohele / hello-again.clj
Last active Nov 19, 2021
JEP 408 com.sun.net.httpserver: Clojure Hello World
View hello-again.clj
(import '(com.sun.net.httpserver HttpHandlers HttpServer Headers Filter))
(import '(java.net InetSocketAddress))
(import '(java.util.function UnaryOperator))
(defn make-handler
[{:keys [status headers body]}]
(HttpHandlers/of status (Headers/of headers) body))
(def identity-filter
(Filter/adaptRequest "Identity"
@eerohele
eerohele / stacktrace.edn
Created May 31, 2021
ClojureScript stack trace
View stacktrace.edn
#error {
:cause nil
:via
[{:type clojure.lang.ExceptionInfo
:message failed compiling file:src/hello_world/core.cljs
:data {:file #object[java.io.File 0x630a647c src/hello_world/core.cljs], :clojure.error/phase :compilation}
:at [cljs.compiler$compile_file$fn__4001 invoke compiler.cljc 1747]}
{:type clojure.lang.ExceptionInfo
:message nil
:data #:clojure.error{:source src/hello_world/core.cljs, :line 6, :column 3, :phase :compilation}
@eerohele
eerohele / README.md
Last active Dec 20, 2021
Start Clojure Socket REPL server and write the port number into .repl-port
View README.md

In your ~/.clojure/deps.edn, add an alias like this:

:socket-repl {:extra-deps {me.flowthing/shiv {:git/url "https://gist.github.com/eerohele/8611d1a98bd2d5e8ddda14d8394d720a"
                                              :sha "339ef83def69e62ac969a2fd797a9be1d3c1fe83"}}
              :exec-fn shiv/start-server
              :exec-args {:name "server"
                          :port 0
                          :accept clojure.core.server/repl
 :server-daemon false}}
View cljs-macro-compiler-stack-overflow.txt
--------------------------------------------------------------------------------
79 |
80 |
81 | (deftest surgeon
82 | (spec/test-with (spec/browser) page
---------^----------------------------------------------------------------------
null
StackOverflowError:
shadow.build.cljs-hacks/shadow-resolve-var (cljs_hacks.cljc:154)
shadow.build.cljs-hacks/shadow-resolve-var (cljs_hacks.cljc:148)
View keys.pub
BEGIN MESSAGE.
ZlGCeaVIOme2sCc k7aM5azZDf8EwrX 4dUaIaKru5MOfW7 xDTolSOzxKTDA2f
q36EErpEcULTthd 1khuiM9BjaUTCKq 6Xr2MZHgg6smaIL BpjOvAsq7EbxijZ
fSj5kuHbySVTnuH YIWUnXY5GoHnZlS aqDRMsNR9btNJlP pzv7I0aNlDoMQsU
Z1imMSmbnfS2TgB avyYaeJjLH8GrrZ jTEzl0Qz5Z.
END MESSAGE.
View core.clj
(require '[clojure.main :as m])
(m/repl
:init #(apply require m/repl-requires)
:eval (fn [form]
(do
(require '[clojure.pprint :refer [pp pprint]])
(require '[hashp.core])
(eval form))))
@eerohele
eerohele / learnxinyminutes-clojure.markdown
Last active Nov 21, 2019
A Markdown version of the Clojure variant of learnxinyminutes https://learnxinyminutes.com/docs/clojure
View learnxinyminutes-clojure.markdown

This is a version of learnxinyminutes for Clojure adapted for use with Useless.

All I've done is lifted most of the comments out of the code blocks, removed the ; => bits, and some minor copy editing.


Clojure is a Lisp family language developed for the Java Virtual Machine. It has a much stronger emphasis on pure functional programming than Common Lisp, but includes several STM utilities to handle state as it comes up.

This combination allows it to handle concurrent processing very simply, and often automatically.

View core.async-walkthrough.markdown

core.async walkthrough

This is a Markdown version of the core.async walkthrough.clj.


This walkthrough introduces the core concepts of core.async.

The clojure.core.async namespace contains the public API.