freckle - meetupfiles.meetup.com/10193032/freckle.pdf · freckle sampling. thank you for listening!...

15
Freckle Simple Monadic Functional Reactive Programming for F#

Upload: others

Post on 06-Jul-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

FreckleSimple Monadic Functional Reactive Programming for F#

Page 2: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

What is Functional Reactive Programming?● Coined by Elliott Conal

○ Values over time (Behaviors)

○ Resolution- Independence

○ Extended: Push-Pull FRP (2009)

● 2012: Elm (javascript)○ Inventor: Evan Czaplicki

○ Signals (Event Streams)

○ Simplifies Javascript

○ Not “real” FRP according to Conal

○ Hidden state approach (foldp)

Page 3: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

FRP is● Declarative● Time manipulation● Resolution Independence● Events as messages

FRP is not● Behaviors● Inherently time leaking● Hidden state

My View on FRP

Page 4: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

FRP Dream

Page 5: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Freckle version

Page 6: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Mouse Position

Page 7: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Freckle Core Types

Page 9: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Search with suggestions

Page 10: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

FRP: Debouncing

Page 11: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

The Game Loop

Page 12: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Sampling - Understanding the basics

What we want What we get

Page 13: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Sampling - The naïve solution

Page 14: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Freckle Sampling

Page 15: Freckle - Meetupfiles.meetup.com/10193032/Freckle.pdf · Freckle Sampling. Thank you for listening! ^.^ 1 Sec Sleep 500ms O O O O O O O O Current Time Future 3: let desiredDeIay while

Thank you for listening! ^.^