rDx      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw NonexTyped variable.yDeduces types for a dag:MdeduceTypes (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). Algorithm proceeds as follows. We init an array of type requests and a reference for fresh identifiers. Type request comes from right hand side of the statement. We need fresh identifiers for converters. If we are going to use a new statement for conversion we need new variables.(discussLine) 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) In the second run we substitute all identifiers with typed variables. It's no so strightforward 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. z{|}~xyz{|}xyz{|}~xy NoneF  None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~vwxyz{|}~stujklmnopqrQRSTUVWXYZ[\]^_`abcdefghiIJKLMNOP?@ABFGHCDE:;<=>3456789)*+,-./012!"#$%&'(  5   !"#$%&'() *+,-./0123456789:;<=>? @ABFGHCDEIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None-./035AMultiple output. Specify the number of outputs to get the result.The Csound rates. PrimitivesSApplication of the opcode: we have opcode information (Info) and the arguments [a] Rate conversionnSelects a cell from the tuple, here argument is always a tuple (result of opcode that returns several outputs) if-then-else>Boolean expressions (rendered in infix notation in the Csound)@Numerical expressions (rendered in infix notation in the Csound) Reading/writing a named variableImperative If-then-elselooping constructions Verbatim stmtDependency trackingfIt's a primitive value or something else. It's used for inlining of the constants (primitive values).4RatedVar is for pretty printing of the wiring ports.iRate (can be undefined or Nothing, it means that rate should be deduced automatically from the context)aDependency (it is used for expressions with side effects, value contains the privious statement)Main expression/The inner representation of csound expressions.An instrument identifier-Constructs an instrument id with the integer.1Constructs an instrument id with fractional part.2Constructs an instrument id with the string label.Makes an rated variable.Querries a rate. Querries an integral identifier. ]Constructs PrimOr values from the expressions. It does inlining in case of primitive values. ]Constructs PrimOr values from the expressions. It does inlining in case of primitive values.               B       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's okay to do some side effects when playing a note.! !"#$%&'() !"#$%&'() !"$#%&'() !"#$%&'()None4.Converts Haskell's doubles to Csound's doubles5.Converts Haskell's strings to Csound's strings6/Converts Haskell's integers to Csound's doubles**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO'*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO'HIEFG,-./@A012346578+9:;<>?=*BCDJNLMKO**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNONone35PQRSTPQRSTPQRTSPQRSTNoneU!The Csound note. It's a triple of !(startTime, duration, parameters)UVWXYZ[\]^_`abcdefghijklmnUVWXYZ[\]^_`abcdefghijklmndefgh`abcVWXYZ[\]^_Uklmnij UVWXYZ[\]^_`abcdefghijklmn None$      !"#$%&'()*+,      !"#$%&'()*+, NoneD  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()UVWXYZ[\]^_`abcdefghijklmnNone35>Lopqrstuv-./0123456789:;opqrstuvopqsrtuvopqrstuv-./0123456789:; None#<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_=CEHIK^#<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^None`abcdefghijklmnab`abcdefghijklmnNonewopqwwwopqNonex  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwr !!"#$%&'()*+,-./01234567789:;<=>?@@ABCDEFFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSSTUVWWXYZ[[\]^^_`abcdefghijklmnop  q r r s t u u v w x y y z { | } ~                                                                      !"#$%&'( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J KLMNOPQRSTUVWXYZ[\]^_`csoun_IK1hFGBDFKzAxRfHZJwPqPCsound.Dynamic.Types.FlagsCsound.Dynamic.Types.ExpCsound.Dynamic.Types.DepCsound.Dynamic.BuildCsound.Dynamic.Build.NumericCsound.Dynamic.Types.CsdFileCsound.Dynamic.Build.LogicCsound.Dynamic.RenderCsound.Dynamic.Tfm.DeduceTypes"Csound.Dynamic.Tfm.UnfoldMultiOutsCsound.Dynamic.Tfm.LivenessCsound.Dynamic.TypesCsound.Dynamic.Render.PrettyCsound.Dynamic.Render.InstrCsound.DynamicConfighwBufioBufnewKrnewSrscoreInomacrosmacrosetSchedschedNumstrsetN skipSecondssetTempo DisplayMode NoDisplayPostScriptDisplay AsciiDisplayDisplays csdLineNums displayModedisplayHeartbeat messageLevelmAmpsmRange mWarningsmDbmColours mBenchmarksmsgColordisplayVerbose listOpcodesRtmidiPortMidiAlsaMidiCoreMidiMmeMidi WinmmeMidi VirtualMidiNoRtmidiMidiRT midiDevicemidiKey midiKeyCps midiKeyOct midiKeyPch midiVelocitymidiVelocityAmp midiOutDeviceMidiIOmidiFile midiOutFile muteTracksrawControllerModeterminateOnMidi PulseAudiopaServerpaOutputpaInputRtaudio PortAudioAlsaJack jackClient jackInport jackOutportMme CoreAudio NoRtaudioIdTagsidArtist idComment idCopyrightidDate idSoftwareidTitle FormatTypeAiffAuAvrCafFlacHtkIrcamMat4Mat5NisPafPvfRawSd2SdsSvxVocW64WavWavexXiDither TriangularUniform FormatSamplesBit24AlawUcharSchar FloatSamplesUlawShortLong FormatHeaderNoHeader RewriteHeaderAudioFileOutput formatSamples formatTypeoutputinputnosoundnopeaksditherFlagsaudioFileOutputidTagsrtaudio pulseAudiomidiIOmidiRTrtmididisplaysconfig flagsVerbatimMultiOutNumOpAddSubNegMulDivPowModNumExpCondOpTrueOpFalseOpAndOrEquals NotEqualsLessGreater LessEquals GreaterEqualsCondInfoBoolExp PreInline InlineExp InlinePrimInline inlineExp inlineEnvNoteGengenSizegenIdgenArgsgenFilePrimPPStringPrimInt PrimDouble PrimString PrimInstrIdPrimVarprimVarTargetRateprimVar Signature SingleRate MultiRate outMultiRate inMultiRateRateXrArKrIrSrFrWrTvar OpcFixityPrefixInfixOpcodeInfoinfoName infoSignature infoOpcFixityVarTypeLocalVar GlobalVarVarvarTypevarRatevarName VarVerbatimMainExpEmptyExpExpPrimTfm ConvertRateSelectIfExpBoolExpNumInitVarReadVarWriteVarIfBegin ElseBeginIfEnd UntilBeginUntilEndVerbatimStartsSeqEndsExpPrimOrunPrimOrRatedVarRatedExp ratedExpRateratedExpDepends ratedExpExpEInstrId instrIdFrac instrIdCeil InstrLabelName intInstrId ratioInstrId stringInstrIdratedVar ratedVarRate ratedVarIdratedExpnoRatewithRatesetRatetoPrimOr toPrimOrTfm isEmptyExpisPrefixisInfixisTrueisFalse LocalHistory expDependency newLineNum newLocalVarIdDepTunDepTrunDepTevalDepTexecDepTdepTdepT_mdepT stripDepT stmtOnlyT newLocalVars newLocalVarwriteVarreadVar readOnlyVarinitVar appendVarBySpecsSpec1prim opcPrefix oprPrefixoprInfixtfmtfmNoInlineArgspn withInitsdoublestrintverbatiminstrIdEspec1opcsopcsNoInlineArgsopr1oprByopr1kinfOprnumExp1numExp2specsmopcsmogetRatesisMultiOutSignature getPrimUnsafetoExponExpsetSrsetKr setNchnls setNchnls_isetKsmps setZeroDbfsceilEfloorEroundEfracEintECsdEventSco scoTotalDurscoGensscoNotesInstr instrName instrBody InstrBodyOrcorcHeadorcInstrumentsCsdcsdFlagscsdOrccsdScointInstralwaysOn csdEventStart csdEventDurcsdEventContentcsdEventTotalDurwhen1whensifBegin elseBeginifEnduntilDo untilBeginuntilEnd renderCsd deduceTypes TypeGraph mkConvert defineTypeLinelineTypelineStmt lineConvertsConvert convertFrom convertToStmtTypeMapGetType NoConversionConversionLookupvarId 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$fDefaultFlagsLineNumisCondOp getCondInfoOp$fHashableInstrId$fHashableRatedExp$fHashablePrimOr$fHashableMainExp $fHashableVar$fHashableVarType$fHashableInfo$fHashableOpcFixity$fHashableRate$fHashablePrim $fHashableGen$fHashableNumOp$fHashableCondOp$fHashableInlineExp$fHashablePreInline$fTraversablePrimOr$fFoldablePrimOr$fHashableInline$fHashableSignature $fHashableFixghc-prim GHC.TypesIOstartdependsendemptyEnewVar$fMonadTransDepT $fMonadDepT$fApplicativeDepT $fFunctorDepT$fDefaultLocalHistory getInfoRates setGlobalgInit gInitDouble enumErrortoNumOpt fromNumOptexpNum fromDoubleisZerounOptbiOpt doubleToIntmod' $fIntegralFix $fRealFix $fEnumFix $fFloatingFix$fFractionalFix$fNumFix $fMonoidFixMemory Registers registers livenessTable substTable SubstTable LivenessTableStArrIdListDagRhsLhs LineNumberliveness countLinesallocIdfreeId insertSortedonRegsinitRegsisAlive lookUpSubst saveSubstsubstLhssubstRhsallocAndSkipInitsallocfreeanalysesubstExpinitStinitSubstTablewithCondboolExpcondExpcondInfoboolOpsboolOp0boolOp2 fromBoolOptnotE $fOrdBFix$fEqBFix$fIfBFixTFCo:R:BooleanOfFix $fBooleanFixTabDepthvcatSepbinariesunariesbinaryunaryfunc ppCsdFiletagppNotesppNoteppPrimppGenppInstr ppInstrIdppStmtppExpppCond$=ppOuts ppPrimOrVarppStrgetppIfppOpcppProcppVar varPrefix ppVarType ppConvertRateppInlineppCondOpppNumOp ppRatedVarppRate ppTotalDurwlppr_5yN7q1pAoUb89IckasciOYText.PrettyPrint.LeijenDoc renderInstrrenderInstrBodytoDag getFrameInfotrimByArgLengthclearEmptyResults collectRatesfilterDepCases rateGraph unfoldSpec coherentRates deduceRaterateExpmergeWithPrimOr renderFlags renderOrc renderSco