TO ENCODE :STRING ;encodes all digraphs in :string as single characters ;in line with the pairings provided by :digraphs IF EMPTY? :STRING [OP "] IF EMPTY? BF :STRING [OP :STRING] MAKE "TRANSLATION FIND WORD FIRST :STRING FIRST BF :STRING :DIGRAPHS IF EMPTY? :TRANSLATION [OP WORD FIRST :STRING ENCODE BF :STRING] OP WORD LAST :TRANSLATION ENCODE BF BF :STRING END TO FIND :KEY :DATA.LIST ;retrieves any sub-list of :data.list which contains :key IF EMPTY? :DATA.LIST [OP []] IF MEMBER? :KEY FIRST :DATA.LIST [OP FIRST :DATA.LIST] OP FIND :KEY BF :DATA.LIST END TO DECODE :STRING ;decodes all digraph codes in :string as two character sequences ;in line with the pairings provided by :digraphs IF EMPTY? :STRING [OP "] MAKE "TRANSLATION FIND FIRST :STRING :DIGRAPHS IF EMPTY? :TRANSLATION [OP WORD FIRST :STRING ENCODE BF :STRING] OP WORD FIRST :TRANSLATION DECODE BF :STRING END MAKE "DIGRAPHS [[CH £] [TH ^] [DH {] [SH $] [ZH %] [NG }]] ÿ