Skip to content

Instantly share code, notes, and snippets.

@chribben
chribben / MatrMult.fsx
Created August 31, 2012 23:16
Matrix multiplication
let mulVectors v1 v2 = List.fold2(fun s x y -> s + x * y) 0 v1 v2
let mulMatr m1 m2 =
let rec mulMatr'' m1 m2 m3 =
let rec mulMatr' m1 m2 v =
match m1, m2 with
| h1::t1, h2::t2 -> mulMatr' t1 m2 ((mulVectors h1 h2)::v)
| [], _ -> List.rev v
| _ -> failwith "error in format"
match m1, m2 with
| h1::t1, h2::t2 -> let v = mulMatr' m1 m2 []
@chribben
chribben / p3playlistasyncinFsharp.fs
Created September 4, 2012 07:50
P3 playlist async in F#
open System.Net
open System.IO
let date = "2012-08-28"
let getDataAsync (url:string) = async{
let r = WebRequest.Create(url)
let! resp = r.AsyncGetResponse()
use stream = resp.GetResponseStream()
use reader = new StreamReader(stream)
let data = reader.ReadToEnd()
return data}
@chribben
chribben / MainPage.cs
Created October 6, 2012 22:03
Async gotcha in C#
async void AcquireFromCamera(object sender, RoutedEventArgs e)
{
try
{
var imageStream = await _cameraCapture.Shoot();
var dto = new Dto(){ImageStream = imageStream};
dto.Id = Guid.NewGuid().ToString();
var file = await _fileHndlr.CreateFileAsync(dto.Id);
dto.ImageFilePath = file.Path;
_fileOperator.StoreStream(dto.ImageStream, file);
@chribben
chribben / MainPage.cs
Created October 7, 2012 10:06
Async gotcha in C# II
async void AcquireFromCamera(object sender, RoutedEventArgs e)
{
try
{
var imageStream = await _cameraCapture.Shoot();
var dto = new Dto(){ImageStream = imageStream};
_handler.ImageCaptured(dto);
Frame.Navigate(typeof(EditDataPage), dto.Id);
}
catch (Exception ex)
@chribben
chribben / ImageCaptureHandler.cs
Created October 7, 2012 10:09
Async gotcha in C# III
async void ImageCaptured(Dto dto)
{
dto.Id = Guid.NewGuid().ToString();
var file = await _fileHndlr.CreateFileAsync(dto.Id);
dto.ImageFilePath = file.Path;
_fileOperator.StoreStream(dto.ImageStream, file);
SaveNewDataItem(dto);
var dataItem = dataSource.GetItem(dto.Id);
StoreData(dataItem);
}
public interface IRepository<TEntity> where TEntity : class
{
IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "");
TEntity GetById(object id);
void AddOrUpdate(TEntity entity);
void Delete(object id);
class mosquitto {
exec { 'apt-get update':
command => '/usr/bin/apt-get update'
}
package { 'python-software-properties':
ensure => installed,
require => Exec['apt-get update'],
}
exec { 'sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa':
command => 'add-apt-repository ppa:mosquitto-dev/mosquitto-ppa',
[STAThread]
static void Main()
{
_nui = new Runtime();
var app = new Application();
var window = new Window();
InitializeNui(); //Initializing the Runtime object and opening video streams
CreateGUI(window); //Setting up a canvas to hold the RGB video and the image attached to the hand of captured person
var skeletonFrameReadyObservable = Observable.FromEventPattern(_nui, "SkeletonFrameReady");
var trackedSkeletons = from ev in skeletonFrameReadyObservable
@chribben
chribben / MessagePassingFSharp.fsx
Created April 9, 2013 20:32
Tcp message passing in F#
open System.Net.Sockets
open System.IO
open System
let port = 1234
let clientProc i =
printfn "Connecting"
let client = new System.Net.Sockets.TcpClient("192.168.48.43", port)
let inew = i+uint64(1)
let sw = new StreamWriter(client.GetStream())
@chribben
chribben / FuncPuzzle4.fsx
Last active December 20, 2015 03:59
1. Write a function that, given a sequence of either positive or negative integers, returns true if any subset of the list sums up to zero. Eg: find-solutions ([-7 4 3 8 -5]) => true find-solutions ([-6 2 3]) => false 2. Make it work with any number, not just zero. Eg: find-solutions (0, [-7 4 3 8 -5]) => true find-solutions (13, [-7 4 3 8 -5]) …
let initMask length = List.init length (fun i -> if i = length - 1 then 1 else 0)
let addOne mask = List.foldBack (fun t (resList, c) -> (if (t = 1 && c = 1) then (0::resList, 1) elif (t = 0 && c= 0) then (0::resList, 0) else (1::resList, 0))) mask ([], 1) |> fst
let subsetsWhosSumsSatisfiesPredicate lst pred =
let rec work mask = seq{
let sum, subSet = List.fold2 (fun (accSum, subSet) m l -> if m = 0 then (accSum, subSet) else (accSum + l, l::subSet)) (0, []) mask lst
if pred sum then
yield (List.rev subSet)
if List.exists (fun t -> t = 0) mask then
yield! work (addOne mask)
}