|k      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortable Safe-Inferred31Lennart Kolmodin, Ross Paterson, George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> experimentalPortableNoneA # is an efficient way to build lazy 1s. There are several functions for constructing Xs, but only one to inspect them: to extract any data, you have to turn them into lazy s using .Internally, a  constructs a lazy  by filling byte arrays piece by piece. As each buffer is filled, it is 'popped' off, to become a new chunk of the resulting lazy +. All this is hidden from the user of the .O(1). The empty Builder, satisfying   =  O(1).+ A Builder taking a single byte, satisfying  (  b) =   b O(1).L The concatenation of two Builders, an associative operation with identity  , satisfying  (  x y) =   ( x) ( y) O(1). A Builder taking a  , satisfying  (  bs) =  [bs]O(1). A Builder taking a lazy  , satisfying  ( bs) = bsO(n). Extract a lazy  from a P. The construction work takes place if and when the relevant part of the lazy  is demanded.O(1). Pop the N we have constructed so far, if any, yielding a new chunk in the result lazy .&Sequence an IO operation on the bufferGet the size of the buffer&Map the resulting list of bytestrings.Ensure that there are at least n many bytes available. Ensure that n( many bytes are available, and then use f& to write some bytes into the memory. Ensure that n( many bytes are available, and then use f0 to write some storable values into the memory.#Write a Word16 in big endian format&Write a Word16 in little endian format@Write a 24 bit number in big endian format represented as Word32CWrite a 24 bit number in little endian format represented as Word32#Write a Word32 in big endian format&Write a Word32 in little endian format#Write a Word64 in big endian format&Write a Word64 in little endian format O(1).; A Builder taking a single native machine word. The word is written in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion.!]Write a Word16 in native host order and host endianness. 2 bytes will be written, unaligned."]Write a Word32 in native host order and host endianness. 4 bytes will be written, unaligned.#Write a Word64 in native host order. On a 32 bit machine we write two host order Word32s, in big endian form. 8 bytes will be written, unaligned.0$%&' (  )*+,-./01234 !"#56789 (  )./01234 !"#56-$%&' (  )*+,-./01234 !"#56789 "Lennart Kolmodin, George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> experimentalPortableNone:HThe Get monad is just a State monad carrying around the input ByteString;The parse state<Run the Get monad applies a =%-based parser on the input ByteString>Run the Get monad applies a =-based parser on the input ByteString. Additional to the result of get it returns the number of consumed bytes and the rest of the input.? Skip ahead n bytes. Fails if fewer than n bytes are available.@Run ga4, but return without consuming its input. Fails if ga fails.ALike @, but consume the input if gma returns 'Just _'. Fails if gma fails.BLike @, but consume the input if gea returns 'Right _'. Fails if gea fails.C1Get the total number of bytes read to this point.DGet the number of remaining unparsed bytes. Useful for checking whether all input has been consumed. Note that this forces the rest of the input.EVTest whether all input has been consumed, i.e. there are no remaining unparsed bytes.F An efficient =5 method for strict ByteStrings. Fails if fewer than n bytes are left in the input.G An efficient =; method for lazy ByteStrings. Does not fail if fewer than n bytes are left in the input.HvGet a lazy ByteString that is terminated with a NUL byte. Fails if it reaches the end of input without hitting a NUL.I,Get the remaining bytes as a lazy ByteStringJPull n. bytes from the input, as a strict ByteString.KlSplit a ByteString. If the first result is consumed before the -- second, this runs in constant heap space.8You must force the returned tuple for that to work, e.g. >case splitAtST n xs of (ys,zs) -> consume ys ... consume zsL!Read a Word8 from the monad stateM"Read a Word16 in big endian formatN%Read a Word16 in little endian formatO3Read a 24 bit word into Word32 in big endian formatP"Read a Word32 in big endian formatQ%Read a Word32 in little endian formatR"Read a Word64 in big endian formatS%Read a Word64 in little endian formatTO(1). Read a single native machine word. The word is read in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes.UO(1).? Read a 2 byte Word16 in native host order and host endianness.VO(1).8 Read a Word32 in native host order and host endianness.WO(1).7 Read a Word64 in native host order and host endianess.R:XY;Z=[\]<>^?@AB_`abCDEFGHIJcKdefLgMhNiOjklPmQnRoSpqrstuvwxyz{|}~TUVWA:<>^?@AB_`abCDEFGHIJfLgMhNiOjklPmQnRoSpqrstuvwxyz{|}~TUVWO:XY;Z=[\]<>^?@AB_`abCDEFGHIJcKdefLgMhNiOjklPmQnRoSpqrstuvwxyz{|}~TUVWGeorge GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNone3!       George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNone3George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNone !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uvwxyz{|}~lmnopqrsthijkabcdefg+`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,'()* !"#$%&0  !"#$%&'()*+5`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,abcdefghijklmnopqrstu vwxyz{|}~ George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNonewS]M+     !"#$$%&'()*+,--./01234 56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijkklmnnopqrstuvvwxyz{|}~ !p; !      !"#$%&'()*+,- . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K . L / M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | }~ HCodecs-0.4.1 Data.Audio Codec.WavCodec.SoundFont Codec.MidiInternal.ArbitraryInternal.ByteString.BuilderL BytestringInternal.ByteString.Parser SampleMode PressLoopContLoopNoLoopAudio sampleRate channelNumber sampleDataAudibletoSample fromSample SampleDataSample sampleNumber sampleTypeconvertparseSampleDatabuildSampleData AudibleInWav parseSample buildSample bitsPerSample importFile exportFileparseWavbuildWavShdr sampleNamestartend startLoopendLoop originalPitchpitchCorrection sampleLinkInstinstName instBagNdx Generator ReservedGenRootKeyExclusiveClass ScaleTuning SampleIndexFineTune CoarseTuneLoopEndAddressCoarseOffset InitAttenVelKeyLoopStartAddressCoarseOffsetVelRangeKeyRange InstIndexKeyToVolEnvDecayKeyToVolEnvHold ReleaseVolEnv SustainVolEnv DecayVolEnv HoldVolEnv AttackVolEnv DelayVolEnvKeyToModEnvDecayKeyToModEnvHold ReleaseModEnv SustainModEnv DecayModEnv HoldModEnv AttackModEnv DelayModEnv FreqVibLfo DelayVibLfo FreqModLfo DelayModLfoPanReverbChorus ModLfoToVolEndAddressCoarseOffset ModEnvToFc ModLfoToFcInitQInitFc ModEnvToPitch VibLfoToPitch ModLfoToPitchStartAddressCoarseOffsetLoopEndAddressOffsetLoopStartAddressOffsetEndAddressOffsetStartAddressOffsetModsrcOperdestOperamount amtSrcOper transOperBaggenNdxmodNdxPhdr presetNamepresetbank presetBagNdxlibrarygenre morphologyPdtaphdrspbagspmodspgensinstsibagsimodsigensshdrsSdtasmplsm24Info ReservedInfo UsedToolsCommentsCopyrightMessageIntendedProductAuthors CreationDate RomVersionRomNameBankNameTargetSoundEngineVersion SoundFontinfossdtapdta isSampleIndex isInstIndexparseSoundFontbuildSoundFont parseInfos buildInfos parseSdta buildSdta parsePdta buildPdtaMessageSysexReserved KeySignature TimeSignature SMPTEOffset TempoChangeTrackEnd DeviceName ProgramName ChannelPrefixCuePointMarkerLyricsInstrumentName TrackName CopyrightTextSequenceNumber PitchWheel pitchWheelChannelPressure ProgramChange ControlChangecontrollerNumbercontrollerValue KeyPressurepressureNoteOnNoteOffchannelkeyvelocityTempoBankPresetPressureVelocityChannelTimeTicksTimeDivTicksPerSecond TicksPerBeatTrackFileType MultiPattern MultiTrack SingleTrackMidifileTypetimeDivtracks isNoteOffisNoteOn isKeyPressureisControlChangeisProgramChangeisChannelPressure isPitchWheelisChannelMessageisSysexMessage isMetaMessage isTrackEndremoveTrackEnds toSingleTrackmerge toAbsTime fromAbsTime toRealTime fromRealTime parseMidi buildMidi parseTrack buildTrack parseMessage buildMessagearrayGen stringNulGen$fArbitraryArray$fArbitraryByteString$fArbitraryByteString0$fArbitraryChar$fArbitraryWord$fArbitraryInt64$fArbitraryInt32$fArbitraryInt16$fArbitraryInt8$fArbitraryWord64$fArbitraryWord32$fArbitraryWord16$fArbitraryWord8Builderbytestring-0.10.4.0Data.ByteString.Lazy.Internal ByteStringtoLazyByteStringemptyData.ByteString.Lazy singletonappendfromByteStringData.ByteString.Internal fromChunksfromLazyByteStringflush unsafeLiftIOwithSize mapBuilder ensureFreewriteN writeNbytes putWord16be putWord16le putWord24be putWord24le putWord32be putWord32le putWord64be putWord64le putWordHost putWord16host putWord32host putWord64hostBuffer runBuilderputWord8 putString defaultSize writeNBuffer newBufferwriteNBufferBytesputInt8 putInt16le putInt16be putInt32le putInt32be putInt64le putInt64be putVarLenBe putVarLenLe varLenAux1 varLenAux2$fMonoidBuilderParserS runParsergetrunParserStateskip lookAhead lookAheadM lookAheadE bytesRead remainingisEmpty getByteStringgetLazyByteStringgetLazyByteStringNulgetRemainingLazyByteStringgetBytes splitAtSTgetWord8 getWord16be getWord16le getWord24be getWord32be getWord32le getWord64be getWord64le getWordHost getWord16host getWord32host getWord64hostunParserput initStatemkStatechoiceexpect getString getStringNulstringbsJoinreadNgetPtrsatisfyword8word16beword16leword24be getWord24leword24leword32beword32leword64beword64legetInt8int8 getInt16leint16le getInt16beint16be getInt32leint32le getInt32beint32be getInt64leint64le getInt64beint64bewordHost word16host word32host word64host getVarLenBevarLenBe getVarLenLevarLenLe$fAlternativeParser$fApplicativeParser$fMonadPlusParser $fMonadParser$fFunctorParser$fArbitrarySampleMode$fAudibleDouble$fAudibleFloat$fAudibleWord64$fAudibleWord32$fAudibleWord16$fAudibleWord8$fAudibleInt64$fAudibleInt32$fAudibleInt16 $fAudibleInt8$fArbitraryAudio $fShowAudio $fEqAudioparserSelectorbytesPerSampleparseFmtbuildFmt parseData buildDataparseUnknownChunk$fAudibleInWavInt64$fAudibleInWavInt32$fAudibleInWavInt16$fAudibleInWavWord8 buildInfobuildInfoString parseSubchunk buildSubchunk parsePhdr buildPhdrparseBagbuildBagparseModbuildModparseGenbuildGen parseInst buildInst parseShdr buildShdr$fArbitraryShdr$fArbitraryInst$fArbitraryGenerator$fArbitraryMod$fArbitraryBag$fArbitraryPhdr$fArbitraryPdta$fArbitrarySdta$fArbitraryInfo$fArbitrarySoundFont parseMessagesparseChannelMessage parseChannel parseNoteOff parseNoteOnparseKeyPressureparseControlChangeparseProgramChangeparseChannelPressureparsePitchWheelbuildChannelMessageparseMetaMessagebuildMetaMessageparseSequenceNumber parseTextparseCopyrightparseTrackNameparseInstrumentName parseLyrics parseMarker parseCuePointparseProgramNameparseDeviceNameparseChannelPrefix parseTrackEndparseTempoChangeparseSMPTEOffsetparseTimeSignatureparseKeySignature parseReservedparseSysexMessagebuildSysexMessage$fArbitraryMessage$fArbitraryTimeDiv$fArbitraryFileType$fArbitraryMidi