úÎEÍBk5      !"#$%&'()*+,-./01234;The default backend for . Concrete syntax for 1#L', indexed by backend representation in  the typed tagless style  ( -http://okmij.org/ftp/tagless-final/index.html).  Append a 1 to the end of the given .  Append a # to the end of the given . Return a fresh  to be used in a call to  or . Place a 0 at the given point in the program. Note that a  particular $ may be used only once per program.  Unconditional jump to the given . Case analysis; pops a " from the front of the  scrutinized ), if non-empty. Note that in the default B backend, new labels are automatically created and placed for the  branches of the  . The  to scrutinize.  Run if the  is empty. Run if the front of the  is a 1. Run if the front of the  is a #. A 1#L program is a 5 of  s. !Abstract syntax for a variant of 1#, 1#L with labels and . gotos instead of forward and backward jumps. Label representation. A  consists of a , a program counter, and a  6+ from registers to the words they contain. A 1# program is a 5 of s. "Abstract syntax for the primitive 1# instructions. Register identifiers.  A wrapper around a list of " s with an 7 instance,  so that literal strings of 1s, #s, and whitespace can be used  instead of lists of $s and #es. This requires the  -XOverloadedStrings flag.  loop :: Word  loop = "1### 11####" !"Typed representation of the 1# letters. #$8% Convert a   back into a 9. & Convert an  to concrete syntax. ' Convert a  to concrete syntax. :(Parse a   into a  ; returns ; if an invalid  instruction is found. <=)Performs the single  indicated by the program  counter, if available. Returns ' Left mach' if a step cannot be  performed, and ' Right mach' with an updated  otherwise. *Given a 0 and the initial state of the registers, return # the final state of the registers. +Wrapper around * that parses the given   into a  8, and then runs it in the given register state. Returns 1 the value in register 1 once the program halts. Returns ; when either the given   fails to parse, or D if the machine halts abnormally with an invalid program counter or , values in registers other than register 1. >, Convert a 1#  into a semantically-equivalent 1#L   ). May fail with an error if the original  is  non-tidy3, that is it contains forward or backward jumps to & instructions outside of the program. ?- Convert a 1#L   into a semantically-equivalent 1#   . May fail with an error if the   contains A duplicate labels, jumps to undefined labels. An error will also  occur if the  - contains a goto that would translate into a = jump of 0 instructions, as this is impossible to express in 1#. .AConvenience function to create a fresh label and place it at the  current position. / Compiles an  program into an  . 0 Given an 1 program and an initial register state, and then 1 runs it in the given register state. May return ; if the ( program does not halt cleanly, as with *. 1 Encodes an @ type into a   of backwards-binary  digits using 1s and #s for 1s and 0s, respectively. Note - that the representation of zero is a single # rather than the  empty  . 2 Decodes a  + containing backwards-binary digits into a A " type. Fails with an error if the   is empty. 3CYields the successor of the backwards-binary number in register 1. < *Language.TRM> decodeBB <$> phi succBB [(R 1, encodeBB 0)]  Just 1 > *Language.TRM> decodeBB <$> phi succBB [(R 1, encodeBB 119)]  Just 120 4EYields the sum of two backwards-binary numbers in registers 1 and 2. O *Language.TRM> decodeBB <$> phi plusBB [(R 1, encodeBB 2), (R 2, encodeBB 3)]  Just 5 R *Language.TRM> decodeBB <$> phi plusBB [(R 1, encodeBB 100), (R 2, encodeBB 20)]  Just 120 5  !"#$%&'()*+,-./012345"$# !%&'()*+  ,- ./012345    !!"$##$%&'()*+,-./01234B      !"#$%&'()*+,-./0123456789:;<=>?@=ABC=DEFGHI=JK=LMNtext-register-machine-0.1.0 Language.TRMLCompLCunLC LSymanticssnocOnesnocHash freshLabellabelgotocondLProgram LInstructionLLabelLGotoLCase LSnocHashLSnocOneLabelMachineMprogrampcregsProgram InstructionCaseBackwardForwardSnocHashSnocOneRegisterRWordWLetterHashOne wordToStringinstructionToStringprogramToString parseProgramsteprunphitoLabeledProgramfromLabeledProgramfreshLabelHerecompileLrunLencodeBBdecodeBBsuccBBplusBB vector-0.9.1 Data.VectorVectorcontainers-0.4.1.0Data.MapMapbase Data.StringIsString++GHC.BaseStringparseInstruction Data.MaybeNothingsnocReg unsnocReg exposeLabelsexposePositionsGHC.RealIntegralGHC.NumNum