Skip to content

Instantly share code, notes, and snippets.

Yehonathan Sharvit viebel

Block or report user

Report or block viebel

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View create-graph.clj
(ns dijkstra.core)
(defn make-graph [] (atom {}))
(defn add-node [g node]
(swap! g assoc node {}))
(defn add-edge [g src target]
(swap! g update src #(assoc % target 1)))
View dijkstra.clj
(ns dijkstra.core)
(defn unvisited-neighbors
"Returns unvisited node's neighbors"
[graph node unvisited] (select-keys (get graph node) unvisited))
(defn update-costs
"Returns costs updated with any shorter paths found to curr's unvisited
neighbors by using curr's shortest path"
[g costs curr unvisited]
View capstone-6.clj
(def github-db {"viebel"
{:username "viebel",
:name "Yehonathan Sharvit",
:email "ys@me.com",
:organizations ["ibm" "google"],
:repositories
{"klipse" {:name "klipse", :stars 23451, :forks 1254},
"titeuf" {:name "titeuf", :stars 1432, :forks 52},
"spirou" {:name "spirou", :stars 455, :forks 9}}},
"zepad"
View tagged-literals.cljs
(require
'[cljs.tools.reader :as r]])
(binding [r/*data-readers* {'a/num (constantly 1)}]
:a (r/read-string "{:a #a/num \"42\"}"))
View re-frame-timer-demo.cljs
(ns simple.core
(:require [reagent.core :as reagent]
[re-frame.db :as db]
[re-frame.core :as rf]))
;; A detailed walk-through of this source code is provied in the docs:
;; https://github.com/Day8/re-frame/blob/master/docs/CodeWalkthrough.md
;; -- Domino 1 - Event Dispatch -----------------------------------------------
@viebel
viebel / defn-args.cljs
Last active Jan 26, 2019
The `spec` for `defn` arguments is called `:defn-args` and it is defined in [clojure.core.specs namespace](https://github.com/clojure/clojure/blob/clojure-1.9.0-alpha13/src/clj/clojure/core/specs.clj#L78-L84). But there are two problems with this implementation: 1. It has [not yet been ported](http://dev.clojure.org/jira/browse/CLJS-1813) to `cl…
View defn-args.cljs
(s/def ::local-name (s/and simple-symbol? #(not= '& %)))
(s/def ::binding-form
(s/or :sym ::local-name
:seq ::seq-binding-form
:map ::map-binding-form))
;; sequential destructuring
(s/def ::seq-binding-form
(s/and vector?
View quick-start.clj
(def summaries ["cold" "moderate"]) ;; creates a vector with two strings: "cold" and "moderate"
(def new-summaries (assoc summaries 2 "hot")) ;; creates a new vector with an additional string: "hot"
(def old-names {:c "celsius" }) ;; creates a map from keywords to strings
(def names (assoc old-names {:f "farenheit"})) ;; creates a new map with additional entry
(defn celsius->farenheit [c] ;; define a function that converts from celsius to farenheit
(+ 32 (* c 9/5))) ;; c * 9/5 + 32
(defn celsius->summary [c] ;; define a function that converts from celsius to summary
View topics-low-rank.clj
(require '[clojure.string :refer [join]])
(def d (js->clj js/data :keywordize-keys true))
(print
(join "\n"
(->> (:topics d)
(remove #(get-in % [:factors :bad]))
(remove #(<= (:count %) (+ (get-in % [:factors :automated] 0)
(get-in % [:factors :autoEmail] 0)
View gains.clj
;; gorilla-repl.fileformat = 1
;; **
;;;
;; **
;; @@
(ns gains
(:require [gorilla-plot.core :as plot]
[gadjett.collections :refer [map-object]]
@viebel
viebel / memoize-tr.clj
Created Sep 20, 2018
a memoized version of a function (even if it is not referentially transparent)
View memoize-tr.clj
(defn transparent [arg]
[(type arg) (meta arg) (when (seq? arg) (seq arg)) arg])
(defn memoize-tr
"Returns a memoized version of a function (even if it is not referentially
transparent). The memoized version of the function keeps a cache of the
mapping from arguments to results and, when calls with the same arguments
are repeated often, has higher performance at the expense of higher memory use."
{:added "1.0"
You can’t perform that action at this time.