0'$      !"# experimentalconal@conal.net<$%&'()*+,-./Sink of information 0Convenient shorthand Type specialization of 1 Type specialization of 2 3!Add post-processing. (Could use 4 instead, but 3 is more  specifically typed.) 5Add pre-processing. 6Add pre- and post processing 7Combine sinks 89:;<=>?@&Run a visualization on a constructed (A-extracted) value. The F action is executed just once, after the visualization is all set up, 9 which allows for things like OpenGL shader compilation. BCDE FGEA clock that reports time in seconds and updates at the given period  (in seconds). A clock that updates every 1/ 60 second HI.Rate slider. Convenience function built from  sliderRin and J. =Rate slider. Updates result (integral) 60 times per second.  Specialization of I. J>Integral of an input, with given update interval (in seconds) FIntegral of an input. Updates result (integral) 60 times per second. K >Render output, given a rendering action. Handles all set-up. C Intended as an implementation substrate for functional graphics. LAn empty texture. Test with  MIs a texture empty? NOPQTRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu2v1wxyz{|}~     experimentalconal@conal.net6Sink of information Convenient shorthand Type specialization of 1 Type specialization of 2 Combine sinks &Run a visualization on a constructed (A-extracted) value. The F action is executed just once, after the visualization is all set up, 9 which allows for things like OpenGL shader compilation. EA clock that reports time in seconds and updates at the given period  (in seconds). A clock that updates every 1/ 60 second .Rate slider. Convenience function built from  sliderRin and . =Rate slider. Updates result (integral) 60 times per second.  Specialization of . >Integral of an input, with given update interval (in seconds) FIntegral of an input. Updates result (integral) 60 times per second. >Render output, given a rendering action. Handles all set-up. C Intended as an implementation substrate for functional graphics. An empty texture. Test with ! !Is a texture empty? "#TRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu2v1wxyz{|}~ !"#" !# !"#           !" !#$%&'()*+,-./0123456789:;<=>?@ABCDEF GH GI GJ GK GL GM GN GO PQ PR PS PT UV UW UX UY UZ U[ U\ U] U^ U_ U` Ua Ub Uc Ud Ue Uf Ug Uh Ui Uj Uk Ul Um !n !o !p !q rs rt ru vw vx vy vz v{ v| v} v~ v v v v    *+,-.23789:;<=>?@ABCDEF GtkTV-0.1.8Interface.TV.Gtk2Interface.TV.GtkRGTVOutIngtvrunGTVrunOutIOrunOut sliderRIn sliderIInclockIn rateSliderIn integralIn renderOut emptyTexturetextureIsEmpty fileNameIn textureInOrientVertical HorizontalMkO'MkOunMkOMkI'MkIunMkISinkActionTV-0.4.7Interface.TV.TangibletvrunTVresultbaseGHC.Basefmapargument~>>+>inMkIinMkI2inMkOinMkO2forget2boxedhboxedrunMkOrunMkOIOghc-prim GHC.TypesIOboxNewboxerprimMkIprimMkO sliderGInclockDtItimerateSliderDtIn integralDtInmkCanvasflipYbogusTO loadTexture deleteTexture fileMungeInforgetInterface.TV.IOrunIOtoFilefromFilefileOut interactRS interactOutfileIn contentsInInterface.TV.Defaults defaultIn DefaultIn defaultOut DefaultOutInterface.TV.CommoninteractLineRSreadShow interactLineshowOutboolOut stringOutreadInboolInstringInputShowCgetReadFreadDgetBoolgetRead getString CommonInsputBoolputShow putString CommonOutsCInputCInputICOutputCTVunTvTVTVFunRunTVInterface.TV.OFunwrapOOXOFunInterface.TV.OutputoTitleoPairoLambdaoPrimasOPair asOLambdaoutputOPrimOLambdaOPairOTitleOutputInterface.TV.InputasIPairiTitleiPairiPriminputIPrimIPairITitleInput