Skip to content

Instantly share code, notes, and snippets.

View cyberglot's full-sized avatar
👋
say hi

april cyberglot

👋
say hi
View GitHub Profile
@cyberglot
cyberglot / first-class-functions.js
Last active August 29, 2015 14:12
FP in JavaScript - First-Class Functions
var add = function(a, b){
return a + b
}
@cyberglot
cyberglot / high-order-functions1.js
Last active August 29, 2015 14:12
FP in JavaScript - High Order Functions
document.querySelector('#button')
.addEventListener('click', function(){
alert('yay, i got clicked')
})
@cyberglot
cyberglot / high-order-functions2.js
Created December 31, 2014 21:40
FP in JavaScript - High Order Functions
var add = function(a){
return function(b){
return a + b
}
}
var add2 = add(2)
add2(3) // => 5
@cyberglot
cyberglot / immutable.ml
Created December 31, 2014 21:50
FP in OCaml - Immutable data
let x = 5;;
x = 6;;
print_int x;; (* prints 5 *)
@cyberglot
cyberglot / guess.hs
Last active August 29, 2015 14:12
FP in Haskell - Readability
guess :: Int -> [Char]
guess 7 = "Much 7 very wow."
guess x = "Ooops, try again."
-- strongly inspired by http://learnyouahaskell.com
@cyberglot
cyberglot / list-plus-one.hs
Created January 1, 2015 18:26
FP in Haskell - Readability II
plus1 :: [Int] -> [Int]
plus1 [] = []
plus1 (x:xs) = x + 1 : plus1 xs
-- plus1 [0,1,2,3]
-- > [1,2,3,4]
Verifying that +cyberglot is my blockchain ID. https://onename.com/cyberglot
@cyberglot
cyberglot / retro2016.md
Last active June 8, 2019 21:24
tentando ver o lado bom de 2016...

2016 em retrospecto

2016 não foi um ano bom, em geral. Entretanto, esse foi um ano que eu considero especialmente bom na minha vida.

Tech

  • 2015 foi um ano desastroso pra mim, comecei 2016 com aviso prévio na Podio, que tava demitindo em massa todo mundo do escritório de Copenhagen. Felizmente, já na primeira semana de Janeiro, consegui uma oferta da Opbeat - que é definitivamente o produto mais interessante que já trabalhei.
  • Em Abril, larguei a Opbeat (como dev em tempo integral), para começar o doutorado em Ciência da Computação na Universidade de Roskilde. Algo que eu ensaiava fazer há muito tempo, que era me distanciar de JavaScript e desenvolvimento frontend para me dedicar à Programação Funcional e Teoria de Tipos, em um nível acadêmico.
  • Aprendi Teoria de Tipos, inclusive a implementar checadores de tipos até System F. Sei como tipos dependentes e de refinamento funcionam, embora não tenha uma visão clara de como implementá-los (2017 spoiler). Também aprendi "tipos
Require Import Bool.
Require Import Arith.
Require Import List.
(*E1 Find the last element of a list. *)
(*E2 Find the last but one element of a list. *)
(*E3 Find the K'th element of a list. The first element in the list is number 1. *)
Require Import Arith.
Require Import List.
(* This is the definition of insertion sort from "Coq in a Hurry": *)
Fixpoint insert n l :=
match l with
| nil => n :: nil
| a :: l' => if leb n a then n :: l else a :: insert n l'
end.