combinators - lightning talk
TRANSCRIPT
![Page 1: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/1.jpg)
CombinatorsMike Harris
![Page 2: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/2.jpg)
How to Add Data Without Stopping Flow?
CSV Filter AddFile ID
![Page 3: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/3.jpg)
How to Add Data Without Stopping Flow? (LINQ)
CSV Filter AddFile ID
read Where ???
C#
![Page 4: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/4.jpg)
How to Add Data Without Stopping Flow? (LINQ)
CSV Filter AddFile ID
read Where ???
C#
![Page 5: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/5.jpg)
How to Add Data Without Stopping Flow?K combinator
CSV Filter Add File ID
read Where Pipe
C#
![Page 6: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/6.jpg)
MoreLINQ’s Pipe
public static IEnumerable<T> Pipe<T>( this IEnumerable<T> source, Action<T> action )
C#
![Page 7: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/7.jpg)
MoreLINQ’s Pipe in Context
csv.GetRecords<TTarget>() .Where(x => x.PricingDate != "") .Pipe(x => { x.FileId = fileId; }) …
C#
![Page 8: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/8.jpg)
Combinators
![Page 9: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/9.jpg)
K combinator
let K x y = x
F#
![Page 10: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/10.jpg)
K combinator
const tap = f => x => {f(x); return x;}; const K = tap;
JS
![Page 11: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/11.jpg)
I combinator
let I x = x
F#
![Page 12: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/12.jpg)
I combinator
const identity = x => x; const I = identity;
JS
![Page 13: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/13.jpg)
S combinator
let S x y z = x z (y z)
F#
![Page 14: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/14.jpg)
S combinator
const seq = function(/*funcs*/) { const funcs = Array.prototype.slice.call(arguments); return x => funcs.forEach(f => f(x)); }; const S = seq;
JS
![Page 15: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/15.jpg)
Example
![Page 16: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/16.jpg)
I = SKK
I = SKK
logic
![Page 17: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/17.jpg)
I = SKK
I x = SKK x
definitions • I x = x • K xy = x • S xyz = xz(yz) logic
![Page 18: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/18.jpg)
I = SKK
I x = SKK x = Kx (Kx)
definitions • I x = x • K xy = x • S xyz = xz(yz) logic
![Page 19: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/19.jpg)
I = SKK
I x = SKK x = Kx (Kx) = Kx x
definitions • I x = x • K xy = x • S xyz = xz(yz) logic
![Page 20: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/20.jpg)
I = SKK
I x = SKK x = Kx (Kx) = Kx x = xdefinitions • I x = x • K xy = x • S xyz = xz(yz) logic
![Page 21: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/21.jpg)
Lightning!
![Page 22: Combinators - Lightning Talk](https://reader034.vdocuments.net/reader034/viewer/2022051502/58ed11de1a28aba5398b46bf/html5/thumbnails/22.jpg)
Extensional Equality
csv.GetRecords<TTarget>() .Where(x => x.PricingDate != "") .Pipe(x => { x.FileId = fileId; }) …
C#