Moved to https://weakish.github.io/StutteringTalkaholic/dive-into/fish/
unison.log.old | |
unison.log |
~ #node.js | |
[20.16.16] < TheEmpath> so | |
[20.16.34] < TheEmpath> anyone else have a hot programmer girl in their office? o____O | |
[20.16.42] < Lorentz> I wiiish | |
[20.16.48] <@Nexxy> not appropriate. | |
[20.16.57] »¡« Signoff caaakeeey: #Node.js (Ping timeout: 260 seconds) | |
[20.17.32] < joshwnj> yeah guys, grow up | |
[20.17.38] < jerrysv> Nexxy: olynode was fun, you should have gone | |
[20.18.03] < TheEmpath> my boss came by and said "Here, a new subodinate" and its a very attractive female. the otherwise painfully quite engineering room suddenly came to life and its a problem :X | |
~~~~~~~ |
<link rel="stylesheet" type="text/css" href="http://static.tumblr.com/n9ku3gx/bmmlda7os/prettify.css"/> | |
<script type="text/javascript" src="http://static.tumblr.com/n9ku3gx/1k0lda7q0/jquery.min.js"></script> | |
<script type="text/javascript" src="http://static.tumblr.com/n9ku3gx/DiKlda7r3/prettify.min.js"></script> | |
<script type="text/javascript"> | |
$(function() { | |
$('pre.colorthis').addClass('prettyprint'); | |
prettyPrint(); | |
}); | |
</script> |
An overly-ambitious attempt to re-think the core calculus of dependent type theory by basing it on graphs as opposed to lambdas, Π-types, Σ-types, etc. The hope is that this might allow us to investigate dependency more closely, and allow us to refine programs to target different environments in an easier way than with traditional programming representations.
(defn with-local-redefs-fn | |
[a-var its-new-value func] | |
(cast clojure.lang.IFn @a-var) | |
(alter-meta! a-var | |
(fn [m] | |
(if (::scope-count m) | |
(update-in m [::scope-count] inc) | |
(assoc m | |
::scope-count 1 | |
::thread-local-var (doto (clojure.lang.Var/create @a-var) |
The idea behind program analysis is simple, right? You just want to know stuff about your program before it runs, usually because you don't want unexpected problems to arise (those are better in movies.) Then why looking at Wikipedia gives you headaches? Just so many approaches, tools, languages 🤯
In this article I would like to give a glimpse of an overarching approach to program analysis, based on ideas from abstract interpretation. My goal is not to pinpoint a specific technique, but rather show how they have common core concepts, the differences being due mostly to algorithmic challenges. In other words, static analysis have a shared goal, but it's a challenge to make them precise and performant.
Code is meant to be executed by a computer. Take the following very simple function:
fun cantulupe(x) = {
#!/usr/bin/env bash | |
set -euo pipefail | |
sudo sh -c 'echo "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main" > /etc/apt/sources.list.d/docker.list' | |
curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - | |
sudo apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D | |
sudo apt-get update | |
sudo apt-get -y install "docker-engine=1.13.1-0~ubuntu-$(lsb_release -cs)" |
This describes how I setup Atom for an ideal Clojure development workflow. This fixes indentation on newlines, handles parentheses, etc. The keybinding settings for enter (in keymap.cson) are important to get proper newlines with indentation at the right level. There are other helpers in init.coffee and keymap.cson that are useful for cutting, copying, pasting, deleting, and indenting Lisp expressions.
The Atom documentation is excellent. It's highly worth reading the flight manual.