BEGIN:VCALENDAR
PRODID;X-RICAL-TZSOURCE=TZINFO:-//Calagator//EN
CALSCALE:GREGORIAN
X-WR-CALNAME:Calagator
METHOD:PUBLISH
VERSION:2.0
BEGIN:VTIMEZONE
TZID;X-RICAL-TZSOURCE=TZINFO:America/Los_Angeles
BEGIN:STANDARD
DTSTART:20141102T020000
RDATE:20141102T020000
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20141208T074627Z
DTEND;TZID=America/Los_Angeles;VALUE=DATE-TIME:20141207T210000
DTSTART;TZID=America/Los_Angeles;VALUE=DATE-TIME:20141207T190000
DTSTAMP;VALUE=DATE-TIME:20141208T074627Z
LAST-MODIFIED;VALUE=DATE-TIME:20141208T074627Z
UID:http://calagator.org/events/1250467464
DESCRIPTION:Jake Brownson will be presenting on his project River:&#13\;\
 n&#13\;\n&#13\;\n&#13\;\nRiver is a purely functional reactive system bu
 ilt on top of C++11 &#13\;\nwith some Ruby metaprogramming. It's reactiv
 e in the sense that as &#13\;\ninputs to the program change invalidation
 s ripple through a big graph &#13\;\nof functions until they hit the out
 puts which greedily reevaluate the &#13\;\ngraph. One significant differ
 ence from other reactive systems is that &#13\;\nthere is no notion of t
 ime\, or sequences of values at the language &#13\;\nlevel. There is no 
 notion of events\, or continuous streams of values. &#13\;\nIt is just a
  big function that gets reevaluated as the input changes. &#13\;\nWe can
  talk about these things using the system\, but they aren't first &#13\;
 \nclass. &#13\;\n&#13\;\n&#13\;\n&#13\;\nOne key idea is to push all of 
 the logical state out of the program &#13\;\nitself and just make the ou
 tputs a big function of the inputs to the &#13\;\nprogram. One big funct
 ion. &#13\;\n&#13\;\n&#13\;\nInputs to the program can be things like th
 e total console input as a &#13\;\nlist of characters\, a list of clicks
  the user has made\, etc. Outputs &#13\;\nof the program are things like
  &quot\;There should be a window on screen&quot\; &#13\;\n&quot\;The win
 dow should be called 'Frank'&quot\;\, &quot\;The window should have this
  &#13\;\nbutton on it&quot\;\, etc. When the user clicks a button in the
  window the &#13\;\ninputs change and a new output is calculated. Maybe 
 the window is now &#13\;\ncalled &quot\;Bob&quot\;. Maybe the window no 
 longer is on screen\, but there's no &#13\;\nstate in the program that i
 sn't a function of the inputs. &#13\;\n&#13\;\n&#13\;\nInteractive Haske
 ll programs work by ultimately evaluating some lazy &#13\;\nlist of thin
 gs that doesn't end until the program is terminated. &#13\;\nThey're alw
 ays in a state of being partially evaluated until the &#13\;\nprogram en
 ds. In each invalidation cycle the River program is fully &#13\;\nevalua
 ted\, but the bits of it that are dependent on inputs that could &#13\;\
 nchange stay in memory so they can respond to changing inputs. An input 
 &#13\;\nlist may have been empty the first go around\, but now it has an
  item &#13\;\nin it. &#13\;\n&#13\;\n&#13\;\nI'm building River as the f
 irst phase of a larger project\, but would &#13\;\nbe a whole different 
 talk that hopefully I'll be able to do some day &#13\;\nwhen I have some
 thing to demo. I'm always happy to rant about it if &#13\;\nyou ask thou
 gh :). &#13\;\n&#13\;\n&#13\;\nIf the group is interested I would be sho
 wing an AppKit GUI &#13\;\nimplementation of the logic puzzle Akari runn
 ing in the system and &#13\;\ndigging in to how things work a bit (don't
  worry\, I won't show the &#13\;\nparticularly crazy c++ bits). I'll als
 o show an interactive &#13\;\nvisualization of the in-memory graph that 
 allows you to navigate it &#13\;\nhierarchically which makes a great deb
 ugging tool. &#13\;\n&#13\;\n&#13\;\n&#13\;\nABOUT THE GROUP: Join progr
 ammers\, researchers and enthusiasts to discuss functional programming. 
 pdxfunc is a study/user group exploring the world of functional programm
 ing based in Portland\, Oregon. The group welcomes programmers intereste
 d in all functional languages\, including Haskell\, OCaml\, Erlang\, Sca
 la and others\, as well as using functional techniques in non-functional
  languages. The group meets regularly and provides presentations\, demos
  and discussions applicable to all skill levels\, from newbies and exper
 ts. The meetings are usually on the second Monday of the month.&#13\;\n\
 n\nTags: functional programming\, pdxfunc\, haskell\, epdx:group=11\n\nI
 mported from: http://calagator.org/events/1250467464
URL:http://pdxfunc.org/
SUMMARY:pdxfunc: Portland Functional Programming Study Group
LOCATION:Janrain Headquarters: 519 SW 3rd Ave. Suite 200\, Portland OR 97
 204 US
SEQUENCE:1
END:VEVENT
END:VCALENDAR
