Skip to content

Instantly share code, notes, and snippets.

View viebel's full-sized avatar

Yehonathan Sharvit viebel

View GitHub Profile
@viebel
viebel / protocol-do.clj
Last active November 26, 2020 14:32
Protocol and records in a DO compliant way
(defprotocol FullName
(full-name [person]))
(defrecord AuthorEncapsulation [firstname lastname]
FullName
(full-name [author] (str (:firstname author)
" "
(:lastname author))))
(defrecord AuthorData [firstname lastname])
(ns simple.core
(:require
[reagent.core :as reagent :refer-macros [with-let]]
[reagent.dom :refer [render]]))
(def my-org
{:name "nestle"
:description "bla bla bla"
:children [{:name "Choco"
:description "woo"}
(ns simple.core
(:require [reagent.core :as reagent]
[reagent.dom :refer [render]]))
(defn ui []
[:div
[:h1 "Hello world"]])
(require '[clojure.walk :refer [prewalk postwalk]])
(def data {:a 1
:b {:c 2}
:d [3 {:e 4}]})
;; prewalk: node -> map f to children of f(node)
;; prewalk: [a b c] -> (map f (f [a b c]))
;; prewalk: transform node and then transform chilren
@viebel
viebel / README.md
Last active July 30, 2020 17:42 — forked from mfikes/README.md

Self-hosted:

$ plk
ClojureScript 1.10.597
cljs.user=> (require '[foo.core :refer [defnmy]])
nil
cljs.user=> (defnmy FOO clojure.string/lower-case [x]
       #_=>   (inc x))
#'cljs.user/foo
(defn vec->matrix [n v]
(->> v
(partition n)
(mapv vec)))
(defn empty-vec [n]
(into [] (repeat n nil)))
(defn rand-numbers [n k]
(->> (range n)
(defn read-input []
(loop []
(let [input (read-line)]
(when-not (= ":done" input))
(println (str "You entered: >>" input "<<"))
(recur))))
@viebel
viebel / rules.clj
Created November 14, 2019 14:28
text rules matching
(ns my.chat
(:require [clojure.string :as str]))
(def rules
[["hello" "hello you"]
["bye" "see you soon"]
["my name is Riccardo" "nice to meet you Riccardo"]])
(defn respond-fixed [input]
(ns viebel.gist-983676a98aee0991cfb002a67676602f.raw.split-expressions
(:require [cljs.tools.reader :as r]
[cljs.tools.reader.reader-types :as rt]
[clojure.string :as s]))
(defn- read-chars
[reader]
(loop [res []]
(if-let [ch (rt/read-char reader)]
(recur (conj res ch))
(ns viebel.gist-368d3bec58d3ec47e935ad488bafb600
(:require [cljs.tools.reader :as r]
[cljs.tools.reader.reader-types :as rt]
[clojure.string :as s]))
(defn- read-chars
[reader]
(loop [res []]
(if-let [ch (rt/read-char reader)]
(recur (conj res ch))