Skip to content

Instantly share code, notes, and snippets.

@4e6
4e6 / Main.hs
Created Oct 17, 2018
parallel map with timeout
View Main.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NumDecimals #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE PartialTypeSignatures #-}
module Main where
@4e6
4e6 / default.nix
Last active Dec 16, 2018
The result of running stackage2nix on stack git repo
View default.nix
# Generated by stackage2nix 0.7.0 from "./stack.yaml"
{ _nixpkgs ? import <nixpkgs> {} }:
let
stackageOverlay = builtins.fetchGit {
url = "https://github.com/typeable/nixpkgs-stackage.git";
rev = "0852a4b5097c576a4d42a6cd1fdb9e1746a85e3e";
};
nixpkgs = import <nixpkgs> {
overlays = [ (import stackageOverlay) ];
View nixops-gce-journalctl.log
Dec 29 18:12:07 localhost systemd[1]: Starting Fetch host keys and authorized_keys for root user...
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: obtaining SSH key...
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: --2017-12-29 18:12:07-- http://metadata.google.internal/0.1/meta-data/authorized-keys
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: Resolving metadata.google.internal (metadata.google.internal)... 169.254.169.254
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: Connecting to metadata.google.internal (metadata.google.internal)|169.254.169.254|:80... connected.
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: HTTP request sent, awaiting response... 200 OK
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: Length: 113 [application/text]
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: Saving to: ‘/run/tmp.OQwfTw2zGL’
Dec 29 18:12:07 localhost fetch-ssh-keys-start[891]: 0K 100% 53.0M=0s
Dec 29 18:12:07 localhos
@4e6
4e6 / ghc-7.10.3 Runner.dump-simpl-stats
Last active Oct 15, 2017
ddump-simpl-stats for ghc issue #14338
View ghc-7.10.3 Runner.dump-simpl-stats
==================== FloatOut stats: ====================
2017-10-14 20:45:26.943053 UTC
4 Lets floated to top level; 0 Lets floated elsewhere; from 68 Lambda groups
==================== FloatOut stats: ====================
2017-10-14 20:45:27.479678 UTC
@4e6
4e6 / Main.hs
Last active Jul 11, 2017 — forked from snoyberg/Main.hs
Comparing iterators, streams, and loops in Haskell, Rust, and C
View Main.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE TypeFamilies #-}
module Main (main) where
import Foreign
import Foreign.C.Types
@4e6
4e6 / tests.rs
Last active Sep 12, 2016
Rust benchmark ASM
View tests.rs
test tests::xor_black_box ... bench: 69 ns/iter (+/- 1)
test tests::xor_closure_a ... bench: 70 ns/iter (+/- 1)
test tests::xor_closure_b ... bench: 921 ns/iter (+/- 5)
test tests::xor_pointer_a ... bench: 60 ns/iter (+/- 1)
test tests::xor_pointer_b ... bench: 0 ns/iter (+/- 0)
@4e6
4e6 / example.out
Created Feb 4, 2016
Variable `counter` passed to a macros behaves as if it was passed by-reference.
View example.out
scala> var c = 0
c: Int = 0
scala> inc(c)
scala> c
res1: Int = 1
View adapter.scala
// JsValue remembers Adapter
trait JsValue {
type A
}
object JsValue {
type Aux[A0] = JsValue { type A = A0}
}
// Adapter works with JsValue of type T
class Adapter[T] { self =>
View keybase.md

Keybase proof

I hereby claim:

  • I am 4e6 on github.
  • I am 4e6 (https://keybase.io/4e6) on keybase.
  • I have a public key whose fingerprint is D79B E30D 645A 0771 2B89 BC85 87C1 6090 D691 0E91

To claim this, I am signing this object:

View gist:4a0b03038205765dc805
Функциональные программы с производительностью императивных.
Функциональный подход уже достаточно давно является трендом в современном программировании.
С его помощью можно создавать абстракции, с помощью которых можно легко рассуждать о программе.
Функциональные абстракции легко компоновать и в последствии переиспользовать.
И это настольно легко делать, что в итоге мы создаём всё новые и новые абстракции на основе уже имеющихся, особо не задумываясь о том, как программа будет работать в рантайме.
Но на практике любая абстракция, в том числе и функциональная, создаёт значительный оверхед во время выполнения.
В этом докладе, на примере языка Scala, мы поговорим о том, какие же подводные камни возникают при написании функционального кода, и что можно сделать, чтобы в итоге получить эффективную программу.
В качествe примера, рассмотрим Scalan, фреймворк для создания производительных DSL. И выясним, какие же проблемы получается решать на практике.
You can’t perform that action at this time.