Skip to content

Instantly share code, notes, and snippets.

View rarous's full-sized avatar
💭
I may be slow to respond.

Aleš Roubíček rarous

💭
I may be slow to respond.
View GitHub Profile
@rarous
rarous / Maybe.cs
Last active December 16, 2015 01:29
using System;
using System.Collections.Generic;
using System.Linq;
public interface Maybe<T> { }
public class Nothing<T> : Maybe<T> { }
public class Just<T> : Maybe<T> {
public T Value { get; private set; }
return TryGetCachedData(message, metadata, request).Match(
some: data => CachedResult(message.RequestId, data, stats),
none: () => Result(message, context, metadata, request, stats));
void Foo(string bar) {
bar = bar.Trim();
}
@rarous
rarous / MontyHall.fsx
Last active December 14, 2015 12:58
Reimplementation od Monty Hall problem in F#
let _rnd = System.Random()
let rand min max = _rnd.Next(min, max)
type Choice = | Yes | No
let addDoors = function
| (1, _) -> [| "dragon"; "goat"; "goat" |]
| (0, 1) -> [| "goat"; "dragon"; "goat" |]
| (0, 0) -> [| "goat"; "goat"; "dragon" |]
| (_, _) -> failwith "Option is out of range"
// helpers
let inc x = x + 1
let dec x = x - 1
let even x = x % 2 = 0
// adding and subtracting one
let rec add1 lst =
if List.isEmpty lst then []
else (List.head lst) + 1 :: add1 (List.tail lst)
public void Consume(ConnectorRequest message)
{
var context = ProcessMessageContext.Create();
var request = ProcessRequest(message, context);
var timeout = BusinessTimeout(message.Timeout, context);
Observable.Amb(request, timeout).Subscribe(SendResponse(message));
}
<connector id="xxx" useCache="true" maxAge="36000">
<data priority="2">
container.Register(
WcfClient.ForChannels(DefaultClientModel.On(WcfEndpoint.
ForContract<IMultiConnectorService>().
FromConfiguration("HostedConnector"))));
var matchingPairs = from item in groups.
Zip(groupNames, (group, name) => new {
Pair = CreatePair(name, group.Value),
IsMatch = group.Success,
})
where item.IsMatch && IsValidKeyAndValue(item.Pair)
select item.Pair;
bool success = false;
try
{
// do something
success = true;
}
catch { }
Assert.True(success);