xq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop  NoneqTyped variable. rDeduces types for a dag: NdeduceTypes (functorSpecificFuns) (dag) = (dagWithTypes, lastFreshIdentifier) >Assumption -- dag is labeled with integers. Labels are unique + and a list of labels is a range (0, n) (It')s just what we get with CSE algorithm). iAlgorithm proceeds as follows. We init an array of type requests and a reference for fresh identifiers. e Type request comes from right hand side of the statement. We need fresh identifiers for converters. N If we are going to use a new statement for conversion we need new variables. (discussLine) a Then we process lines in reverse order and collect type requests by looking at right hand sides / and writing type requests for all arguments. (processLine) I In the second run we substitute all identifiers with typed variables. It's no so strightforward h due to converters. If there are converters we have to insert new statements and substitute identifiers  with new ones. That'=s why we convert variables to variables in the processLine. stuvwxyz{|}~qrstuv|}~qrstuvwxyz{|}~qr None  None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~uvwxyz{|}rtsiqponmlkjPedcba`_^]\[ZYXWVUTSRQfhgHIJKLMNO>GFBA@?CDE9:;<=2345678()*+,-./01!'&%$#"  5   !'&%$#"( )*+,-./0123456789:;<=> GFBA@?CDEHIJKLMNOPedcba`_^]\[ZYXWVUTSRQfhgiqponmlkjrtsuvwxyz{|}~  Safe-Inferred  5 is a canonical representation of the Csound scores. S A scores is a list of events and we should know the total duration of the scores.  It'Rs not meant to be used directly. We can use a better alternative. More convenient  type that belongs to  + type class (see temporal-csound package). PA class that represents Csound scores. All functions that use score are defined W in terms of this class. If you want to use your own score representation, just define  two methods of the class. The properties: M forall a . toCsdEventList (singleCsdEvent a) === CsdEventList 1 [(0, 1, a)] <Converts a given score representation to the canonical one. hConstructs a scores that contains only one event. The event happens immediately and lasts for 1 second. The Csound note. It's a triple of # (startTime, duration, parameters)  NoneBMultiple output. Specify the number of outputs to get the result. The Csound rates. Verbatim stmt Imperative If-then-else Reading/writing a named variable ANumerical expressions (rendered in infix notation in the Csound) ?Boolean expressions (rendered in infix notation in the Csound)  if-then-else oSelects a cell from the tuple, here argument is always a tuple (result of opcode that returns several outputs) Rate conversion QApplication of the opcode: we have opcode information (Info) and the arguments [a]  Primitives It')s a primitive value or something else. It's used for inlining & of the constants (primitive values). 5RatedVar is for pretty printing of the wiring ports. $Rate (can be undefined or Nothing, F it means that rate should be deduced automatically from the context) :Dependency (it is used for expressions with side effects, ( value contains the privious statement) Main expression 0The inner representation of csound expressions. An instrument identifier .Constructs an instrument id with the integer. 2Constructs an instrument id with fractional part.  3Constructs an instrument id with the string label.  Makes an rated variable.  Querries a rate.  !Querries an integral identifier. CConstructs PrimOr values from the expressions. It does inlining in  case of primitive values.                -      NoneCsound's synonym for -monad. Dep means Side Effect.  You will bump into Dep* trying to read and write to delay lines, > making random signals or trying to save your audio to file. - Instrument is expected to return a value of Dep [Sig].  So it'4s okay to do some side effects when playing a note.  !"#$%&'()* !"#$%&'()* !"#%$&'()* !"#$%&'()*None+,-./0123456789:;<=>?~+,-./0123456789:;<=>?9:;<=~5678+,-./01234>?+,-./0123456789:;<=>?None@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?NoneJConverts Haskell's doubles to Csound' s doubles KConverts Haskell's strings to Csound' s strings LConverts Haskell's integers to Csound' s doubles '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd&@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd&^_Z[\]BCDEUVFGHIJLKMANOPQSTR@WXY`cbad'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNoneefghiefghiefgihefghiNonejklmnojklmnojklonmjklmnoNone#      #     None  !"#$%&'()*   !"#$%&'()* Nonep+,-ppp+,-Noneq  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop. !"#$$%&'()*+,-./01234567899:;<=>?@ABBCDEFGHHIJKLMNOPQRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'(()*+,,-./001233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i  j k k l m n n o p q r r s t u v w x y  z { | } ~                                 !"csound-expression-dynamic-0.0.0Csound.Dynamic.Types.FlagsCsound.Dynamic.Types.EventListCsound.Dynamic.Types.ExpCsound.Dynamic.Types.DepCsound.Dynamic.Types.CsdFileCsound.Dynamic.BuildCsound.Dynamic.Build.NumericCsound.Dynamic.Build.LogicCsound.Dynamic.RenderCsound.Dynamic.Tfm.DeduceTypes"Csound.Dynamic.Tfm.UnfoldMultiOuts Csound.Base CsdEventListCsdScoCsound.Dynamic.TypesCsound.Dynamic.Render.PrettyCsound.Dynamic.Render.InstrCsound.DynamicConfighwBufioBufnewKrnewSrscoreInomacrosmacrosetSchedschedNumstrsetN skipSecondssetTempo DisplayMode AsciiDisplayPostScriptDisplay NoDisplayDisplays csdLineNums displayModedisplayHeartbeat messageLevelmAmpsmRange mWarningsmDbmColours mBenchmarksmsgColordisplayVerbose listOpcodesRtmidiNoRtmidi VirtualMidi WinmmMidiMmeMidiAlsaMidiPortMidiMidiRT midiDevicemidiKey midiKeyCps midiKeyOct midiKeyPch midiVelocitymidiVelocityAmp midiOutDeviceMidiIOmidiFile midiOutFile muteTracksrawControllerModeterminateOnMidi PulseAudiopaServerpaOutputpaInputRtaudio NoRtaudio CoreAudioMmeJack jackClient jackInport jackOutportAlsa PortAudioIdTagsidArtist idComment idCopyrightidDate idSoftwareidTitle FormatTypeXiWavexWavW64VocSvxSdsSd2RawPvfPafNisMat5Mat4IrcamHtkFlacCafAvrAuAiffDitherUniform Triangular FormatSamplesLongShortUlaw FloatSamplesScharUcharAlawBit24 FormatHeader RewriteHeaderNoHeaderAudioFileOutput formatSamples formatTypeoutputinputnosoundnopeaksditherFlagsaudioFileOutputidTagsrtaudio pulseAudiomidiIOmidiRTrtmididisplaysconfig flagsVerbatimcsdEventListDurcsdEventListNotestoCsdEventListsingleCsdEventCsdEvent csdEventStart csdEventDurcsdEventContentdelayCsdEventListrescaleCsdEventListMultiOutNumOpModPowDivMulNegSubAddNumExpCondOp GreaterEquals LessEqualsGreaterLess NotEqualsEqualsOrAndFalseOpTrueOpCondInfoBoolExp PreInline InlineExp InlinePrimInline inlineExp inlineEnvNoteGengenSizegenIdgenArgsgenFilePrim PrimInstrId PrimString PrimDoublePrimIntPStringP Signature MultiRate outMultiRate inMultiRate SingleRateRateTvarWrFrSrIrKrArXr OpcFixityOpcodeInfixPrefixInfoinfoName infoSignature infoOpcFixityVarType GlobalVarLocalVarVar VarVerbatimvarTypevarRatevarNameMainExpVerbatimIfEnd ElseBegin ElseIfBeginIfBeginWriteVarReadVarInitVarExpNumExpBoolIfSelect ConvertRateTfmExpPrimEmptyExpExpPrimOrunPrimOrRatedVarRatedExp ratedExpRateratedExpDepends ratedExpExpEInstrId InstrLabel instrIdFrac instrIdCeilName intInstrId ratioInstrId stringInstrIdratedVar ratedVarRate ratedVarIdratedExpnoRatewithRatetoPrimOr isEmptyExpisPrefixisInfixisTrueisFalse LocalHistory expDependency newLocalVarIdDepTunDepTrunDepTexecDepTdepTdepT_mdepT stripDepT stmtOnlyT newLocalVars newLocalVarwriteVarreadVar readOnlyVarinitVar appendVarBySco scoTotalDurscoGensscoNotesInstr instrName instrBody InstrBodyOrcorcHeadorcInstrumentsCsdcsdFlagscsdOrccsdScointInstralwaysOnSpecsSpec1prim opcPrefix oprPrefixoprInfixtfmtfmNoInlineArgspn withInitsdoublestrintverbatimspec1opcsopcsNoInlineArgsopr1oprByopr1kinfOprnumExp1numExp2specsmopcsmosetRategetRatesisMultiOutSignature getPrimUnsafetoExponExpsetSrsetKr setNchnlssetKsmps setZeroDbfsceilEfloorEroundEfracEintEwhen1whensifBegin elseIfBegin elseBeginifEnd renderCsd deduceTypes TypeGraph mkConvert defineTypeLinelineTypelineStmt lineConvertsConvert convertFrom convertToStmtTypeMapGetTypeConversionLookup NoConversionvarId TypeRequestsinitTypeRequests requestType modifyArraygetTypes lookupVar discussLine mkGetTypenextIdsUnfoldMultiOuts getSelectorgetParentTypesSelectorselectorParent selectorOrder MultiStmt SingleStmtPortportId portOrder ChildrenMaplookupChildren mkChildrenMapunfoldMultiOuts unfoldStmtformLhs mappendBoolppebompmip1p2p3fieldspSamplesAndType firstToLower$fPrettyConfig$fPrettyDisplayMode$fPrettyDisplays$fPrettyRtmidi$fPrettyMidiRT$fPrettyMidiIO$fPrettyPulseAudio$fPrettyRtaudio$fPrettyIdTags$fPrettyDither$fPrettyAudioFileOutput $fPrettyFlags$fMonoidConfig$fDefaultConfig$fMonoidDisplays$fDefaultDisplays$fMonoidMidiRT$fDefaultMidiRT$fMonoidMidiIO$fDefaultMidiIO$fMonoidIdTags$fDefaultIdTags$fMonoidAudioFileOutput$fDefaultAudioFileOutput $fMonoidFlags$fDefaultFlagscsdEventTotalDur delayCsdEventrescaleCsdEvent$fCsdScoCsdEventListisCondOp getCondInfoOp$fTraversablePrimOr$fFoldablePrimOrghc-prim GHC.TypesIOemptyEnewVar$fMonadTransDepT $fMonadDepT$fApplicativeDepT $fFunctorDepT$fDefaultLocalHistorygInit gInitDouble enumErrortoNumOpt fromNumOptexpNum fromDoubleisZerounOptbiOpt doubleToIntmod' $fIntegralFix $fRealFix $fEnumFix $fFloatingFix$fFractionalFix$fNumFix $fMonoidFixwithCondboolExpcondExpcondInfoboolOpsboolOp0boolOp2notE $fOrdBFix$fEqBFix$fIfBFix $fBooleanFixTabDepthvcatSepbinariesunariesbinaryunaryfunc ppCsdFiletagppNotesppNoteppPrimppGenppInstr ppInstrIdppStmtppExpppCond$=ppOuts ppPrimOrVarppStrgetppIfppOpcppProcppVar varPrefix ppVarType ppConvertRateppInlineppCondOpppNumOp ppRatedVarppRate ppTotalDur wl-pprint-1.1Text.PrettyPrint.LeijenDocDag renderInstrrenderInstrBodytoDagtrimByArgLengthclearEmptyResults collectRates rateGraph unfoldSpec coherentRates deduceRaterateExpmergeWithPrimOrBy renderFlags renderOrc renderSco