git clone https://github.com/mono/monodevelop.git
cd monodevelop
git submodule update --init --recursive
Das dauert eine Weile....
| ### Keybase proof | |
| I hereby claim: | |
| * I am carstenkoenig on github. | |
| * I am carstenkoenig (https://keybase.io/carstenkoenig) on keybase. | |
| * I have a public key whose fingerprint is BB93 DA5D BF8A 3E50 2EF7 F595 E68E DE6B D673 43C5 | |
| To claim this, I am signing this object: |
| let seqInnerJoin predicate seq1 seq2 = | |
| let findPairs predicate seq2 element1 = | |
| seq2 | |
| |> Seq.where (predicate element1) | |
| |> Seq.map (fun element2 -> element1, element2) | |
| seq1 | |
| |> Seq.map (findPairs predicate seq2) | |
| |> Seq.collect (fun pair -> pair) | |
| // Die Frage war, warum | |
| ["1", "5"].map(parseInt); | |
| // schief geht. | |
| // Johannes hatte die Antwort, die ich nicht vertanden habe | |
| // die Konsole hilft weiter: | |
| var f = function() { console.log(arguments); } | |
| ["1", "5"].map(f) | |
| > ["1", 0, Array[2]] |
| module Vigenere where | |
| import Data.Char | |
| import Test.QuickCheck.Test (quickCheck) | |
| encrypt :: String -> String -> String | |
| encrypt key = zipWith (shiftChar (+)) (cycle key) | |
| decrypt :: String -> String -> String | |
| decrypt key = zipWith (shiftChar (flip (-))) (cycle key) |
| import Data.Maybe (fromJust) | |
| import Data.List (sort) | |
| rankList :: [Int] -> [Int] | |
| rankList ns = map (fromJust . (flip lookup) ranks) ns | |
| where ranks = zipWith (flip (,)) [1..] . sort $ ns |
| {-# LANGUAGE BangPatterns #-} | |
| {-# LANGUAGE OverloadedStrings #-} | |
| module Main where | |
| import GHC.Exts (sortWith) | |
| import Data.Function (on) | |
| import Data.List (maximumBy, sortBy, nub, foldl') | |
| import qualified Data.Map.Strict as M |
| namespace EventSourcing | |
| module View = | |
| /// the View's builder-type - includes bookkepping for intermediate types and should be hidden | |
| /// from (poor) users view | |
| type T<'e,'i,'a> = private { foldF : 'i -> 'e -> 'i; project : 'i -> 'a; init : 'i } | |
| /// creates a view, based on a fold over intermediate values and a final projection | |
| let createWithProjection (p : 'i -> 'a) (i : 'i) (f : 'i -> 'e -> 'i) = |
| diagInd :: [(Integer, Integer)] | |
| diagInd = iterate f (1,1) | |
| where f (lx,ly) | |
| | ly == 1 = (1, lx+1) | |
| | otherwise = (lx+1, ly-1) |
| let zipAsync (a : Async<'a>) (b : Async<'b>) : Async<'a * 'b> = | |
| async { | |
| let! a' = Async.StartChild a | |
| let! b' = Async.StartChild b | |
| let! a'' = a' | |
| let! b'' = b' | |
| return (a'',b'') | |
| } |