If some record can change it's a good idea to use a sum type, e.g. you start out with your new program like this:
data Wibble = WibbleV0 { port :: Int, name :: String }
A year later you have a new feature that requires more info. Now you
import random | |
import collections | |
# Generic n-ary tree | |
RoseTree = collections.namedtuple('RoseTree', 'a children') | |
def gen_int(): | |
def _gen_int(rng, size): | |
return rng.randrange(0, size) |
let | |
region = "eu-west-1"; | |
in | |
{ | |
resources.ec2KeyPairs.waw-pair = { inherit region; }; | |
resources.ec2SecurityGroups.http-ssh = { | |
inherit region; | |
rules = [ | |
{ fromPort = 22; toPort = 22; sourceIp = "0.0.0.0/0"; } |
{-# LANGUAGE TemplateHaskell #-} | |
module ElmDerive where | |
import Language.Haskell.TH | |
makeElm :: Name -> Q [Dec] | |
makeElm t = do | |
-- Get list of constructors for type t | |
TyConI (DataD _ _ _ constructors _) <- reify t | |
x <- [d| x = "hi" |] |
with (import <nixpkgs> {}).pkgs; | |
let monad-control = pkgs.haskellngPackages.callPackage ./monad-control-0.3.nix {}; | |
pkg = haskellngPackages.callPackage | |
({ mkDerivation, base, monad-control, stdenv, yesod }: | |
mkDerivation { | |
pname = "yesod-nix"; | |
version = "0.1.0.0"; | |
src = ./.; | |
isLibrary = false; | |
isExecutable = true; |
module Main where | |
import Python | |
import Test.QuickCheck | |
import Test.QuickCheck.Monadic | |
square :: Int -> IO Int | |
square = defVV "export = lambda x: x * x" |
with (import <nixpkgs> {}).pkgs; | |
let | |
importDeps = stdenv.mkDerivation { | |
name = "importDeps"; | |
src = fetchurl { | |
url = "file:///home/tom/testbed/nix-import-stuff/ext.zip"; | |
sha256 = "0ivhsn2pp1sgzsywnd2x673ff5q62v9715kkw5vyf63rfh7fw9h4"; | |
}; | |
phases = "unpackPhase installPhase"; |
def get_records(): | |
df = pandas.read_json('1.json') | |
df = pandas.io.json.json_normalize(df['accidents']) | |
for _, row in df.iterrows(): | |
for c in row['casualties']: | |
for i in row['involved']: | |
row['caualty_severity'] = c['severity'] | |
row['caualty_gender'] = c['gender'] | |
row['caualty_class'] = c['class'] | |
row['caualty_vehicle'] = c.get('vehicle', 'unknonwn') |
{ stdenv, fetchurl, buildPythonPackage, pythonPackages, zeromq3, pyqt4 ? null | |
, notebookSupport ? true # ipython notebook | |
, qtconsoleSupport ? true # ipython qtconsole | |
, pylabSupport ? true # ipython --pylab (backend: agg - no gui, just file) | |
, pylabQtSupport ? true # ipython --pylab=qt (backend: Qt4Agg - plot to window) | |
}: | |
# ipython qtconsole works with both pyside and pyqt4. But ipython --pylab=qt | |
# only works with pyqt4 (at least this is true for ipython 0.13.1). So just use | |
# pyqt4 for both. |
include "globals.mzn"; | |
set of 1..5: a = 1..5; % Nicola, Ed, David, Nick, Nigel | |
set of 1..5: b = 1..5; % Guinea, Squirrel, Pitbull, Badger, Fish | |
set of 1..5: c = 1..5; % Moccachino, FlatWhite, Chai, Double Espresso, Decaf | |
set of 1..5: d = 1..5; % Car, Bike, Train, Plane, Walk | |
set of 1..5: e = 1..5; % Tartan, Paisly, Gingham, Striped, Polka | |
array[a] of var a: A; | |
array[b] of var b: B; |