├── .gitignore ├── CheatSheets ├── Haskell.CheatSheet.pdf ├── Haskell.Haskell_Cheat_Sheet.pdf ├── git-cheat-sheet(2).pdf ├── git-cheat-sheet-v2 2.pdf └── git-cheat-sheet.pdf ├── General ├── A Tail-Recursive Machine with Stack Inspection (Clements, Felleisen).pdf ├── A survey of graphical languages for monoidal categories (Selinger).pdf ├── Advanced Macrology and the Implementation of Typed Scheme (Culpepper, Tobin-Hochstadt, Flatt).pdf ├── Beej's Guide to Network Programming - Using Internet Sockets (Hall).pdf ├── Can Programming Be Liberated from the von Neumann Stype (Backus).pdf ├── Can a Biologist Fix a Radio - or, What I Learned while Studying Apoptosis (Lazebnik).pdf ├── Can a Systems Biologist Fix a Tamagotchi (Cardelli).pdf ├── Categorical Programming with Abstract Data Types (Erwig).pdf ├── Categories for the practising physicist (Coecke, Paquette).pdf ├── Continuations in Natural Language (Barker).pdf ├── FAQ on Pi-Calculus (Wing).pdf ├── Fortress Programming Language Tutorial (Steele, Maessen).pdf ├── GNU Emacs Manual (Stallman).pdf ├── Growing a Language (Steele).pdf ├── Literate Programming (Knuth).pdf ├── Logical Types for Untyped Languages (Tobin-Hochstadt, Felleisen).pdf ├── MapReduce - Simplified Data Processing on Large Clusters (Dean, Ghemawat).pdf ├── Network applications of Bloom filters (Broder, Mitzenmacher).pdf ├── On Understanding Data Abstraction, Revisited (Cook).pdf ├── OnLisp │ ├── Fig.05.07_Page.071.pdf │ ├── Fig.07.02_Page.089.pdf │ ├── Fig.07.03_Page.090.pdf │ ├── Fig.20.02_Page.263.pdf │ ├── Fig.22.11_Page.302.pdf │ ├── Fig.23.02_Page.307.pdf │ ├── Fig.23.06_Page.315.pdf │ ├── Fig.24.01_Page.322.pdf │ ├── Fig.25.02_Page.352.pdf │ └── On Lisp (Graham).pdf ├── Overhang (Paterson, Zwick).pdf ├── Physics, Topology, Logic and Computation, A Rosetta Stone (Baez, Stay).pdf ├── Programming Paradigms for Dummies - What Every Programmer Should Know (van Roy).pdf ├── Project Fortress Quick Vocabulary Guide.pdf ├── Project Fortress Reference Card.pdf ├── Sound and Complete Type Inference for a Systems Programming Language (Sridhar, Shapiro, Smith).pdf ├── Teaching Programming with the Kernel Language Approach (van Roy, Haridi).pdf ├── The Design and Implementation of Typed Scheme (Tobin-Hochstadt, Felleisen).pdf ├── The Influence of Browsers on Evaluators or, Continuations to Program Web Servers (Queinnec).pdf ├── The Origins of the BitC Programming Language (Shapiro, Sridhar, Doerrie).pdf ├── The camel has two humps (Dehnadi, Bornat).pdf ├── Towards a Verified, General-Purpose Operating System Kernel (Shapiro, Doerrie, Northup, Sridhar, Miller).pdf ├── Trampolined Style (Ganz, Friedman, Wand).ps ├── Using a Proof Assistant to Teach Programming Language Foundations (Pierce).pdf └── Why Pascal is Not My Favorite Programming Language (Kernighan).pdf ├── Haskell ├── A Declarative Debugger for Haskell (Pope).pdf ├── A Generic Recursion Toolbox for Haskell - Scrap Your Boilerplate Systematically (Ren, Erwig).pdf ├── A History of Haskell (Hudak, Hughes, Peyton Jones, Wadler).pdf ├── A Principled Approach to Operating System Construction in Haskell (Hallgren, Jones, Leslie, Tolmach).pdf ├── A Program Transformation for Debugging Haskell 98 (Pope, Naish).pdf ├── A Short Cut to Deforestation (Gill, Launchbury, Peyton Jones).pdf ├── A Static Semantics for Haskell (Faxen).ps ├── A Static Semantics for Haskell (Peyton Jones, Wadler).ps ├── A Supercompiler for Core Haskell (Mitchell - Runciman).pdf ├── A prettier printer (Wadler).pdf ├── A program to solve Sudoku (Bird).pdf ├── A space semantics for core Haskell (Bakewell - Runciman).pdf ├── A tutorial on the universality and expressiveness of fold (Hutton).pdf ├── An Alternative Approach to Initializing Mutually Referential Objects (Syme).pdf ├── An Evaluation of LOLITA and Related Natural Language Processing Systems (Callaghan).pdf ├── Applicative programming with effects (McBride & Paterson).pdf ├── Arrows and Computation (Paterson).pdf ├── Arrows, Robots, and Functional Reactive Programming (Hudak, Courtney, Nilsson, Peterson).pdf ├── Backtracking, Interleaving, and Terminating Monad Transformers (Kiselyov, Shan, Friedman, Sabry).pdf ├── Beautiful Concurrency (Peyton Jones).pdf ├── Beautiful Differentiation (Elliott).pdf ├── Best of 2009 │ ├── Algebra of Programming in Agda (Mu, Ko, Jansson).pdf │ ├── Commercial Uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf │ ├── Denotational Semantics - A Methodology for Language Development (Schmidt) │ │ ├── README.txt │ │ ├── bib.pdf │ │ ├── ch0.pdf │ │ ├── ch1.pdf │ │ ├── ch10.pdf │ │ ├── ch11.pdf │ │ ├── ch12.pdf │ │ ├── ch2.pdf │ │ ├── ch3.pdf │ │ ├── ch4.pdf │ │ ├── ch5.pdf │ │ ├── ch6.pdf │ │ ├── ch7.pdf │ │ ├── ch8.pdf │ │ ├── ch9.pdf │ │ ├── contents.pdf │ │ ├── frontmatter.pdf │ │ └── preface.pdf │ ├── Experience Report - Haskell in the 'Real World' (Sampson).pdf │ ├── Finally Tagless, Partially Evaluated (Carette, Kiselyov, Shan).pdf │ ├── Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v1).pdf │ ├── Readme.txt │ ├── Safe Functional Reactive Programming through Dependent Types (Sculthorpe, Nilsson).pdf │ └── The Arrow Calculus (Lindley, Wadler, Yallop).pdf ├── Building Domain-Specific Embedded Languages (Hudak).pdf ├── Building Interpreters by Composing Monads (Steele).ps ├── C--, a portable assembly language that supports garbage collection (Peyton Jones, Ramsey, Reig).pdf ├── Certified Programming with Dependent Types (Chlipala).pdf ├── Combinator Parsing - A Short Tutorial (Swierstra).pdf ├── Comparing Approaches to Generic Programming in Haskell (Hinze, Jeuring, Loeh).pdf ├── Composing Haggis (Finne, Peyton Jones).pdf ├── Comprehending Monads (Wadler).pdf ├── Computational Lambda-Calculus and Monads (Moggi).pdf ├── Concurrent Haskell (Peyton Jones, Gordon, Finne).pdf ├── Denotational design with type class morphisms (Elliott).pdf ├── Derivable Type Classes (Hinze, Peyton Jones).pdf ├── Description of the LOLITA system as Used in MUC-7 (Garigliano, Urbanowicz, Nettleton).pdf ├── Design Patterns as Higher-Order Datatype-Generic Programs (Gibbons).pdf ├── Deterministic, Error-Correcting Combinator Parsers (Swierstra, Duponcheel).pdf ├── Domain Specific Embedded Compilers (Leijen, Meijer).pdf ├── Efficient Combinator Parsers (Koopman, Plasmeijer).pdf ├── Fast, Error Correcting Parser Combinators - A Short Tutorial (Swierstra, Alcocer).pdf ├── Finger trees - a simple general-purpose data structure (Hinze, Paterson).pdf ├── Flattening Combinators - Surviving Without Parentheses (Okasaki).ps ├── Free Theorems in the Presence of seq (Johann, Voigtlaender).pdf ├── Fudgets - A Graphical User Interface in a Lazy Functional Language (Carlsson, Hallgren).pdf ├── Fun with Functional Dependencies (Hallgren).pdf ├── Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v3).pdf ├── Functional Pearls │ ├── A Poor Man's Concurrency Monad (Claessen).ps │ ├── A type-correct, stack-safe, provably correct expression compiler in Epigram (McKinna, Wright).pdf │ ├── Alpha-conversion is easy (Altenkirch).pdf │ ├── Combinators for Breadth-First Search (Spivey).ps │ ├── Composing Contracts - An Adventure in Financial Engineering (Peyton Jones, Eber, Seward).pdf │ ├── Composing Fractals (Jones).pdf │ ├── Deriving Backtracking Monad Transformers (Hinze).pdf │ ├── Do We Need Dependent Types (Fridlender, Indrika).ps │ ├── Enumerating the Rationals (Gibbons, Lester, Bird).pdf │ ├── Enumerating the strings of regular languages (McIlroy).ps │ ├── Haskell does it with class - Functorial unparsing (Hinze).pdf │ ├── Implicit Configurations (Kiselyov, Shan).pdf │ ├── Linear, bounded, functional pretty-printing (Swierstra, Chitil).pdf │ ├── Monadic Parsing in Haskell (Hutton, Meijer).pdf │ ├── Monads for Incremental Computing (Carlsson).pdf │ ├── Packrat Parsing - Simple, Powerful, Lazy, Linear Time (Ford).pdf │ ├── Parallel Parsing Processes (Claessen).ps │ ├── Parsing Permutation Phrases (Baars, Loeh, Swierstra).pdf │ ├── Pickler Combinators (Kennedy).pdf │ ├── Polytypic Unification (Jansson, Jeuring).pdf │ ├── Producing All Ideals of a Forest, Functionally (Filliatre, Pottier).ps │ ├── Recursive Subtyping Revealed (Gapeyev, Levin, Pierce).ps │ ├── Strachey's functional pearl, forty years on (Spivey).pdf │ ├── Strong Types for Relational Data Stored in Databases or Spreadsheets (Martins da Silva).pdf │ ├── The Arrow Calculus (Lindley, Wadler, Yallop).pdf │ └── The countdown problem (Hutton).pdf ├── Functional Programming with Overloading and Higher-Order Polymorphism (Jones).pdf ├── Functional Reactive Animation (Elliott, Hudak).pdf ├── Functional Reactive Programming from First Principles (Wan, Hudak).pdf ├── Functional images (Elliott).pdf ├── Generalising Monads to Arrows (Hughes).pdf ├── Generic Views on Data Types (Holdermans, Jeuring, Loeh, Rodriguez).pdf ├── Genuinely Functional User Interfaces (Courtney, Elliott).pdf ├── H-Direct - A Binary Foreign Language Interface for Haskell (Finne, Leijen, Meijer, Peyton Jones).pdf ├── Haskell 98 Language and Libraries - The Revised Report (Peyton Jones).pdf ├── Haskell and XML - Generic Combinators or Type-Based Translation (Wallace, Runciman).pdf ├── Haskell's overlooked object system (Kiselyov, Laemmel).pdf ├── High Level Specification of I-O in Functional Languages (Achten, van Groningen, Plasmeijer).pdf ├── History of Lambda-calculus and Combinatory Logic (Cardone, Hindley).pdf ├── Implementing Type Classes (Peterson, Jones).pdf ├── Iteratee IO - safe, practical, declarative input processing (slides) (Kiselyov).pdf ├── Journal of Functional Programming │ ├── Commercial uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf │ ├── Control effects as a modality (Thielecke).pdf │ ├── From natural semantics to C - A formal derivation of two STG machines (de la Encina, Pena).pdf │ ├── The Genuine Sieve of Eratosthenes (O'Neill).pdf │ └── Type-safe higher-order channels with channel locality (Park, Im).pdf ├── Lambda Calculus and Combinatory Logic (Rosu).pdf ├── Layered Combinator Parsers with a Unique State (draft, Koopman, Plasmeijer).pdf ├── Lazy Functional State Threads (Launchbury, Peyton Jones).ps ├── Lazy Lexing Is Fast (Chakravarty).pdf ├── Modular Domain Specific Languages and Tools (Hudak).pdf ├── Modular Monadic Semantics (Liang, Hudak).pdf ├── Monad.Reader │ ├── TMR-Issue01.pdf │ ├── TMR-Issue06.pdf │ ├── TMR-Issue07.pdf │ ├── TMR-Issue08.pdf │ ├── TMR-Issue09.pdf │ ├── TMR-Issue10.pdf │ ├── TMR-Issue11.pdf │ ├── TMR-Issue12.pdf │ ├── TMR-Issue13.pdf │ ├── TMR-Issue14.pdf │ ├── TMR-Issue15.pdf │ ├── TMR-Issue16.pdf │ ├── TMR-Issue17.pdf │ ├── TMR-Issue18.pdf │ ├── TMR-Issue19.pdf │ └── TMR-Issue20.pdf ├── Monadic Constraint Programming (Schrijvers, Stuckey, Wadler).pdf ├── Monadic Parser Combinators (Hutton, Meijer).pdf ├── Multi-paradigm Declarative Languages (Hanus).pdf ├── Multi-stage programming with functors and monads (Carette, Kiselyov).pdf ├── Observable Sharing for Functional Circuit Description (Claessen, Sands).pdf ├── Optimal Purely Functional Priority Queues (Brodal, Okasaki).pdf ├── Parsec - Direct Style Monadic Parser Combinators For The Real World (Leijen, Meijer).pdf ├── Parsec Documentation (Leijen).pdf ├── Physics, Topology, Logic and Computation - A Rosetta Stone (Baez, Stay).pdf ├── Plugging a Space Leak with an Arrow (Liu, Hudak).pdf ├── Polytypic Programming in Haskell (Norell, Jansson).pdf ├── Porting the Clean Object I-O library to Haskell (Achten, Peyton Jones).pdf ├── Purely Functional Data Structures (Okasaki).pdf ├── Purely Functional Lazy Non-deterministic Programming (Fischer, Kiselyov, Shan).pdf ├── Push-Pull Functional Reactive Programming (Elliott).pdf ├── QuickCheck (Claessen, Hughes).ps ├── Realization of Natural-Language Interfaces Using Lazy Functional Programming (Frost).pdf ├── Removing Left Recursion from Context-Free Grammars (Moore).pdf ├── Report on Curry (Hanus).pdf ├── Scientific Computation and Functional Programming (Karczmarczuk).pdf ├── Scrap More Boilerplate - Reflection, Zips, and Generalised Casts (Laemmel, Peyton Jones).pdf ├── Scrap Your Boilerplate - A Practical Design Pattern for Generic Programming (Laemmel, Peyton Jones).pdf ├── Scrap Your Boilerplate - Reloaded (Hinze, Loeh, Oliveira).pdf ├── Scrap Your Boilerplate - Revolutions (Hinze, Loeh).pdf ├── Scrap Your Boilerplate with Class - Extensible Generic Functions (Laemmel, Peyton Jones).pdf ├── Scrap your Boilerplate with XPath-like Combinators (Laemmel).pdf ├── Simple Unification-based Type Inference for GADTs (Peyton Jones, Vytiniotis, Weirich, Washburn).pdf ├── Simplifying and Improving Qualified Types (Jones).pdf ├── Simply efficient functional reactivity (Elliott).pdf ├── State in Haskell (Launchbury, Peyton Jones).pdf ├── Stream Fusion - From Lists to Streams to Nothing at All (Coutts, Leshchinskiy, Stewart).pdf ├── Tackling the Awkward Squad (Peyton Jones).pdf ├── Template Meta-programming for Haskell (Sheard, Peyton Jones).pdf ├── Testing Monadic Code with QuickCheck (Claessen, Hughes).ps ├── That About Wraps it Up - Using FIX to Handle Errors Without Exceptions (McAdam).pdf ├── The C-- Language Specification (Ramsey, Peyton Jones, Lindig).pdf ├── The Construction of an SASL-Compiler (Grust).ps ├── The Design of a Pretty-printing Library (Hughes).pdf ├── The Essence of Form Abstraction (Cooper, Lindley, Wadler, Yallop).pdf ├── The Essence of Functional Programming (Wadler).ps ├── The Haskell Programmer's Guide to the IO Monad - Don't Panic (Klinger).pdf ├── The Integration of Functions into Logic Programming (older) (Hanus).pdf ├── Theorems for free (Wadler).pdf ├── Time and Space Profiling For Non-strict, Higher-order Functional Langugages (Sansom, Peyton Jones).pdf ├── Tracing Lazy Functional Computations Using Redex Trails (Sparud, Runciman).pdf ├── Tutorial on Curry (Antoy, Hanus).pdf ├── Type Classes in Haskell (Hall, Hammond, Peyton Jones, Wadler).pdf ├── Type Classes with Functional Dependencies (Jones).pdf ├── Type Theory and Functional Programming (Thompson).pdf ├── Type-Oriented Construction of Web User Interfaces (Hanus).pdf ├── Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf ├── Types Are Calling Conventions (Bolingbroke, Peyton Jones).pdf ├── Typing Haskell in Haskell (Jones).pdf ├── Uniform Boilerplate and List Processing (Mitchell, Runciman).pdf ├── WASH-CGI - Server-side Web Scripting with Sessions and Typed, Compositional Forms (Thiemann).pdf ├── Why Functional Programming Matters (Hughes).pdf ├── Wobbly Types - Type Inference for Generalised Algebraic Data Types (Peyton Jones, Washburn, Weirich).pdf └── Write Yourself a Scheme in 48 Hours (Tang et al.).pdf └── Prolog ├── Embedding Prolog in Haskell (Seres, Spivey).pdf ├── Scrap Your Boilerplate - Prologically! (Laemmel).pdf ├── Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf └── What is Unification (Goguen).ps /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *~ 3 | *# 4 | -------------------------------------------------------------------------------- /CheatSheets/Haskell.CheatSheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/CheatSheets/Haskell.CheatSheet.pdf -------------------------------------------------------------------------------- /CheatSheets/Haskell.Haskell_Cheat_Sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/CheatSheets/Haskell.Haskell_Cheat_Sheet.pdf -------------------------------------------------------------------------------- /CheatSheets/git-cheat-sheet(2).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/CheatSheets/git-cheat-sheet(2).pdf -------------------------------------------------------------------------------- /CheatSheets/git-cheat-sheet-v2 2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/CheatSheets/git-cheat-sheet-v2 2.pdf -------------------------------------------------------------------------------- /CheatSheets/git-cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/CheatSheets/git-cheat-sheet.pdf -------------------------------------------------------------------------------- /General/A Tail-Recursive Machine with Stack Inspection (Clements, Felleisen).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/A Tail-Recursive Machine with Stack Inspection (Clements, Felleisen).pdf -------------------------------------------------------------------------------- /General/A survey of graphical languages for monoidal categories (Selinger).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/A survey of graphical languages for monoidal categories (Selinger).pdf -------------------------------------------------------------------------------- /General/Advanced Macrology and the Implementation of Typed Scheme (Culpepper, Tobin-Hochstadt, Flatt).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Advanced Macrology and the Implementation of Typed Scheme (Culpepper, Tobin-Hochstadt, Flatt).pdf -------------------------------------------------------------------------------- /General/Beej's Guide to Network Programming - Using Internet Sockets (Hall).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Beej's Guide to Network Programming - Using Internet Sockets (Hall).pdf -------------------------------------------------------------------------------- /General/Can Programming Be Liberated from the von Neumann Stype (Backus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Can Programming Be Liberated from the von Neumann Stype (Backus).pdf -------------------------------------------------------------------------------- /General/Can a Biologist Fix a Radio - or, What I Learned while Studying Apoptosis (Lazebnik).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Can a Biologist Fix a Radio - or, What I Learned while Studying Apoptosis (Lazebnik).pdf -------------------------------------------------------------------------------- /General/Can a Systems Biologist Fix a Tamagotchi (Cardelli).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Can a Systems Biologist Fix a Tamagotchi (Cardelli).pdf -------------------------------------------------------------------------------- /General/Categorical Programming with Abstract Data Types (Erwig).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Categorical Programming with Abstract Data Types (Erwig).pdf -------------------------------------------------------------------------------- /General/Categories for the practising physicist (Coecke, Paquette).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Categories for the practising physicist (Coecke, Paquette).pdf -------------------------------------------------------------------------------- /General/Continuations in Natural Language (Barker).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Continuations in Natural Language (Barker).pdf -------------------------------------------------------------------------------- /General/FAQ on Pi-Calculus (Wing).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/FAQ on Pi-Calculus (Wing).pdf -------------------------------------------------------------------------------- /General/Fortress Programming Language Tutorial (Steele, Maessen).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Fortress Programming Language Tutorial (Steele, Maessen).pdf -------------------------------------------------------------------------------- /General/GNU Emacs Manual (Stallman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/GNU Emacs Manual (Stallman).pdf -------------------------------------------------------------------------------- /General/Growing a Language (Steele).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Growing a Language (Steele).pdf -------------------------------------------------------------------------------- /General/Literate Programming (Knuth).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Literate Programming (Knuth).pdf -------------------------------------------------------------------------------- /General/Logical Types for Untyped Languages (Tobin-Hochstadt, Felleisen).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Logical Types for Untyped Languages (Tobin-Hochstadt, Felleisen).pdf -------------------------------------------------------------------------------- /General/MapReduce - Simplified Data Processing on Large Clusters (Dean, Ghemawat).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/MapReduce - Simplified Data Processing on Large Clusters (Dean, Ghemawat).pdf -------------------------------------------------------------------------------- /General/Network applications of Bloom filters (Broder, Mitzenmacher).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Network applications of Bloom filters (Broder, Mitzenmacher).pdf -------------------------------------------------------------------------------- /General/On Understanding Data Abstraction, Revisited (Cook).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/On Understanding Data Abstraction, Revisited (Cook).pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.05.07_Page.071.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.05.07_Page.071.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.07.02_Page.089.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.07.02_Page.089.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.07.03_Page.090.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.07.03_Page.090.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.20.02_Page.263.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.20.02_Page.263.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.22.11_Page.302.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.22.11_Page.302.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.23.02_Page.307.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.23.02_Page.307.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.23.06_Page.315.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.23.06_Page.315.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.24.01_Page.322.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.24.01_Page.322.pdf -------------------------------------------------------------------------------- /General/OnLisp/Fig.25.02_Page.352.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/Fig.25.02_Page.352.pdf -------------------------------------------------------------------------------- /General/OnLisp/On Lisp (Graham).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/OnLisp/On Lisp (Graham).pdf -------------------------------------------------------------------------------- /General/Overhang (Paterson, Zwick).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Overhang (Paterson, Zwick).pdf -------------------------------------------------------------------------------- /General/Physics, Topology, Logic and Computation, A Rosetta Stone (Baez, Stay).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Physics, Topology, Logic and Computation, A Rosetta Stone (Baez, Stay).pdf -------------------------------------------------------------------------------- /General/Programming Paradigms for Dummies - What Every Programmer Should Know (van Roy).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Programming Paradigms for Dummies - What Every Programmer Should Know (van Roy).pdf -------------------------------------------------------------------------------- /General/Project Fortress Quick Vocabulary Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Project Fortress Quick Vocabulary Guide.pdf -------------------------------------------------------------------------------- /General/Project Fortress Reference Card.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Project Fortress Reference Card.pdf -------------------------------------------------------------------------------- /General/Sound and Complete Type Inference for a Systems Programming Language (Sridhar, Shapiro, Smith).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Sound and Complete Type Inference for a Systems Programming Language (Sridhar, Shapiro, Smith).pdf -------------------------------------------------------------------------------- /General/Teaching Programming with the Kernel Language Approach (van Roy, Haridi).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Teaching Programming with the Kernel Language Approach (van Roy, Haridi).pdf -------------------------------------------------------------------------------- /General/The Design and Implementation of Typed Scheme (Tobin-Hochstadt, Felleisen).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/The Design and Implementation of Typed Scheme (Tobin-Hochstadt, Felleisen).pdf -------------------------------------------------------------------------------- /General/The Influence of Browsers on Evaluators or, Continuations to Program Web Servers (Queinnec).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/The Influence of Browsers on Evaluators or, Continuations to Program Web Servers (Queinnec).pdf -------------------------------------------------------------------------------- /General/The Origins of the BitC Programming Language (Shapiro, Sridhar, Doerrie).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/The Origins of the BitC Programming Language (Shapiro, Sridhar, Doerrie).pdf -------------------------------------------------------------------------------- /General/The camel has two humps (Dehnadi, Bornat).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/The camel has two humps (Dehnadi, Bornat).pdf -------------------------------------------------------------------------------- /General/Towards a Verified, General-Purpose Operating System Kernel (Shapiro, Doerrie, Northup, Sridhar, Miller).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Towards a Verified, General-Purpose Operating System Kernel (Shapiro, Doerrie, Northup, Sridhar, Miller).pdf -------------------------------------------------------------------------------- /General/Using a Proof Assistant to Teach Programming Language Foundations (Pierce).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Using a Proof Assistant to Teach Programming Language Foundations (Pierce).pdf -------------------------------------------------------------------------------- /General/Why Pascal is Not My Favorite Programming Language (Kernighan).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/General/Why Pascal is Not My Favorite Programming Language (Kernighan).pdf -------------------------------------------------------------------------------- /Haskell/A Declarative Debugger for Haskell (Pope).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Declarative Debugger for Haskell (Pope).pdf -------------------------------------------------------------------------------- /Haskell/A Generic Recursion Toolbox for Haskell - Scrap Your Boilerplate Systematically (Ren, Erwig).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Generic Recursion Toolbox for Haskell - Scrap Your Boilerplate Systematically (Ren, Erwig).pdf -------------------------------------------------------------------------------- /Haskell/A History of Haskell (Hudak, Hughes, Peyton Jones, Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A History of Haskell (Hudak, Hughes, Peyton Jones, Wadler).pdf -------------------------------------------------------------------------------- /Haskell/A Principled Approach to Operating System Construction in Haskell (Hallgren, Jones, Leslie, Tolmach).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Principled Approach to Operating System Construction in Haskell (Hallgren, Jones, Leslie, Tolmach).pdf -------------------------------------------------------------------------------- /Haskell/A Program Transformation for Debugging Haskell 98 (Pope, Naish).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Program Transformation for Debugging Haskell 98 (Pope, Naish).pdf -------------------------------------------------------------------------------- /Haskell/A Short Cut to Deforestation (Gill, Launchbury, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Short Cut to Deforestation (Gill, Launchbury, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/A Supercompiler for Core Haskell (Mitchell - Runciman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A Supercompiler for Core Haskell (Mitchell - Runciman).pdf -------------------------------------------------------------------------------- /Haskell/A prettier printer (Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A prettier printer (Wadler).pdf -------------------------------------------------------------------------------- /Haskell/A program to solve Sudoku (Bird).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A program to solve Sudoku (Bird).pdf -------------------------------------------------------------------------------- /Haskell/A space semantics for core Haskell (Bakewell - Runciman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A space semantics for core Haskell (Bakewell - Runciman).pdf -------------------------------------------------------------------------------- /Haskell/A tutorial on the universality and expressiveness of fold (Hutton).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/A tutorial on the universality and expressiveness of fold (Hutton).pdf -------------------------------------------------------------------------------- /Haskell/An Alternative Approach to Initializing Mutually Referential Objects (Syme).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/An Alternative Approach to Initializing Mutually Referential Objects (Syme).pdf -------------------------------------------------------------------------------- /Haskell/An Evaluation of LOLITA and Related Natural Language Processing Systems (Callaghan).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/An Evaluation of LOLITA and Related Natural Language Processing Systems (Callaghan).pdf -------------------------------------------------------------------------------- /Haskell/Applicative programming with effects (McBride & Paterson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Applicative programming with effects (McBride & Paterson).pdf -------------------------------------------------------------------------------- /Haskell/Arrows and Computation (Paterson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Arrows and Computation (Paterson).pdf -------------------------------------------------------------------------------- /Haskell/Arrows, Robots, and Functional Reactive Programming (Hudak, Courtney, Nilsson, Peterson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Arrows, Robots, and Functional Reactive Programming (Hudak, Courtney, Nilsson, Peterson).pdf -------------------------------------------------------------------------------- /Haskell/Backtracking, Interleaving, and Terminating Monad Transformers (Kiselyov, Shan, Friedman, Sabry).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Backtracking, Interleaving, and Terminating Monad Transformers (Kiselyov, Shan, Friedman, Sabry).pdf -------------------------------------------------------------------------------- /Haskell/Beautiful Concurrency (Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Beautiful Concurrency (Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Beautiful Differentiation (Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Beautiful Differentiation (Elliott).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Algebra of Programming in Agda (Mu, Ko, Jansson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Algebra of Programming in Agda (Mu, Ko, Jansson).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Commercial Uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Commercial Uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/README.txt: -------------------------------------------------------------------------------- 1 | 2 | Hello, 3 | Here are the postscript files for the 1986 printing of my Denotational 4 | Semantics text. The files should be assembled in this order: 5 | 6 | frontmatter 7 | contents 8 | preface 9 | ch0 10 | ch1 11 | ... 12 | ch11 13 | ch12 14 | bib 15 | 16 | 17 | Some caveats: 18 | ---Some graphics are missing. Also, you will note the absence 19 | of arcs in derivation trees and semantics derivations in some Figures. 20 | The text was typeset when graphics tools were not readily available, and the 21 | various graphics that appeared in the hardback version were inserted 22 | by a professional artist. 23 | 24 | ---The version of troff I used to develop the text is long dead and gone, 25 | but I salvaged the source and most macros and successfully printed them 26 | with groff. This changed the page numbering, making the original index 27 | useless. So, there's no index---sorry. 28 | 29 | ---I was unable to typeset the bibliograhy satisfactorily, so I included 30 | raw source, since it is better than nothing. 31 | 32 | 33 | Please send comments to me at schmidt@cis.ksu.edu 34 | 35 | Regards, 36 | Dave Schmidt 37 | 38 | -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/bib.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/bib.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch0.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch1.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch10.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch11.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch11.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch12.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch2.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch3.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch4.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch5.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch6.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch7.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch8.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/ch9.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/contents.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/contents.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/frontmatter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/frontmatter.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/preface.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Denotational Semantics - A Methodology for Language Development (Schmidt)/preface.pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Experience Report - Haskell in the 'Real World' (Sampson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Experience Report - Haskell in the 'Real World' (Sampson).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Finally Tagless, Partially Evaluated (Carette, Kiselyov, Shan).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Finally Tagless, Partially Evaluated (Carette, Kiselyov, Shan).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v1).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v1).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/Readme.txt: -------------------------------------------------------------------------------- 1 | Best Haskell Papers of 2009 2 | ( http://netsuperbrain.com/blog/posts/best-haskell-papers-of-2009 ) 3 | 4 | As the year closed I reminisced on all the Haskell related papers I read in 2009. Some of them lifted my understanding to exciting new heights, while some others seemed impractical or overly tedious. The thought came upon me to present a list of the best of the best with the hope that these excellent papers might inspire and motivate others as they have me. 5 | 6 | Naturally, many will reject such a subjective list. I concede that the list is heavily influenced by my own interests and lack of prerequisite knowledge in some cases. However, I'd argue that it isn't entirely useless. First, I'd expect several of these papers to be well respected by experts in their respective fields. In this way, my list does shadow the objective truth. Second, my rare occupation as a commercial Haskell contractor makes my personal viewpoints of particular interest. 7 | 8 | 9 | The List 10 | 11 | #7 Experience Report: Haskell in the "Real World" - Curt J. Sampson 12 | This paper showcases the decision of a software business to use functional programming without any prior experience with the paradigm. The business's choice of Haskell for a programming language was outlined as well as the benefits they enjoyed. What struck me in particular were the problems and disadvantages the programming team encountered. It was refreshing to see my own experiences with these issues put so clearly. I point business associates primarily to this paper for an introduction to using Haskell commercially. 13 | 14 | 15 | #6 Algebra of programming in Agda: Dependent types for relational program derivation - Shin-Cheng Mu et al. 16 | Agda, a dependently typed programming language with a syntax similar to Haskell, is fueling a lot of research this year. After reading many papers such as this one, I can't help but think that the future lies in dependent types. 17 | 18 | This paper presents an unorthodox approach to writing programs called relational program derivation. One starts by encoding a proposition, for example "the algorithm x sorts all lists", and then deriving a program that the proposition is true for, like quicksort. The authors created an algebra for encoding these derivations in Agda. By using Agda, the derived programs include a computer verified proof of correctness. 19 | 20 | I think it is going to take a while before the programming community, myself included, becomes fully aware of the implications of this paper. 21 | 22 | 23 | #5 Fun with Type Functions - Oleg Kiselyov, Simon Peyton Jones, Chung-chieh Shan 24 | Reaching a limitation of the type checker is a common cause of ire for Haskell programmers. Type families, a new feature of ghc, removes a sizable amount of these limitations. Superseding an earlier compiler extension, functional dependencies, type families opens up many new areas of generic programming as well. One of the most interesting examples from the paper is a simple type-safe implementation of printf and scanf. 25 | 26 | Note that the final version of this paper has not been published yet. 27 | 28 | 29 | #4 Commercial uses: Going functional on exotic trades - Simon Frankau et al. 30 | Where the #7 spot paper expounds on the implications of switching to Haskell, this paper gives an in depth detail of a commercial domain specific embedded language (DSEL) using Haskell. The explanations within were atypically clear and well referenced. After studying this paper I felt confidant in using Haskell as a host language for DSEL's. 31 | 32 | For someone new to DSEL's, this paper is great first read. In my opinion, DSEL's are one of the most lucrative uses of Haskell commercially. 33 | 34 | 35 | #3 Safe Functional Reactive Programming through Dependent types - Neil Sculthorpe, Henrik Nilsson 36 | This paper contributed two important findings to the field of functional reactive programming (FRP). First, it presented several obvious defects in current FRP implementations. Those who've programed with FRP in any depth are painfully aware of how easy it is to accidentally create programs that loop or leak memory at run-time. Sculthorpe and Nilsson pinpoint the exact cause of these issues. 37 | 38 | The second major contribution is an FRP implementation that they proved does not have these problems. The aforementioned proof is computer verified. Can you guess how they did it? If you guessed that they used Agda, you'd be right! Amazing stuff. 39 | 40 | 41 | #2 Typeclassopedia - Brent Yorgey 42 | Brent Yorgey's Typeclassopedia, published in the Monad.Reader is the most comprehensive tutorial on the basic Haskell type classes (like Monoids, Monads, etc.) thus far. It stands out in both its accessibility to all levels of Haskell developers and its vast coverage. The paper can be used both as a tutorial and a reference. For more in-depth studies, lots of useful references are also included. 43 | 44 | This paper is a great contribution to the Haskell community and will surely become a classic. 45 | 46 | 47 | #1 Finally Tagless, Partially Evaluated - Jacques Carette, Oleg Kiselyov and Chung-Chieh Shan 48 | The essence of this paper is so simple, it bears repeating right here: 49 | 50 | varZ env = fst env 51 | varS vp env = vp $ snd env 52 | b b env = b 53 | lam a env = \x -> a (x,env) 54 | app a b env = (a env) (b env) 55 | 56 | What you're looking at is a simple implementation of a typed embedded language using Haskell98 as a host for both the language and the type checking. Prior to this paper, embedded language designers took advantage of Haskell98's syntax, but not its type system. 57 | 58 | The problem the authors so elegantly solve using Haskell98 was a main motivation behind the complex generalized algebraic data type (GADT) extensions to Haskell. Perhaps this extension isn't necessary after all. 59 | 60 | They further describe how to extend this simple interpreter to various efficient compilers and interpreters without modification of the original embedded language. Although the paper primarily uses OCaml, they provide equivalent Haskell code on their website. 61 | 62 | I'm looking forward to seeing more complex embedded languages built on the ideas of this paper. It wins first prize for elegance, utility, and cleverness. 63 | 64 | 65 | Runner-ups 66 | 67 | The Arrow Calculus (Technical Report) - Sam Lindley, Philip Wadler, and Jeremy Yallop 68 | This paper describes a new syntax for arrows that more closely resembles the lambda calculus. It remains to be seen if this syntax is easier to use than our current proc syntax. 69 | 70 | 71 | Push-pull functional reactive programming - Conal Elliott 72 | This paper is a theoretically elegant refactoring of FRP using standard type classes. Had I not directly encountered the subtle, and serious, bugs of this implementation in a commercial setting, it probably would have made the list. 73 | 74 | 75 | Denotational Semantics - David Schmidt 76 | This is a book written in 1982 that I read last year. It is just as relevant today as it was back then. An excellent exposition of denotational semantics. My programming has substantially changed for the better since that read. It was regretfully disqualified for the medium and date of publication. 77 | -------------------------------------------------------------------------------- /Haskell/Best of 2009/Safe Functional Reactive Programming through Dependent Types (Sculthorpe, Nilsson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/Safe Functional Reactive Programming through Dependent Types (Sculthorpe, Nilsson).pdf -------------------------------------------------------------------------------- /Haskell/Best of 2009/The Arrow Calculus (Lindley, Wadler, Yallop).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Best of 2009/The Arrow Calculus (Lindley, Wadler, Yallop).pdf -------------------------------------------------------------------------------- /Haskell/Building Domain-Specific Embedded Languages (Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Building Domain-Specific Embedded Languages (Hudak).pdf -------------------------------------------------------------------------------- /Haskell/C--, a portable assembly language that supports garbage collection (Peyton Jones, Ramsey, Reig).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/C--, a portable assembly language that supports garbage collection (Peyton Jones, Ramsey, Reig).pdf -------------------------------------------------------------------------------- /Haskell/Certified Programming with Dependent Types (Chlipala).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Certified Programming with Dependent Types (Chlipala).pdf -------------------------------------------------------------------------------- /Haskell/Combinator Parsing - A Short Tutorial (Swierstra).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Combinator Parsing - A Short Tutorial (Swierstra).pdf -------------------------------------------------------------------------------- /Haskell/Comparing Approaches to Generic Programming in Haskell (Hinze, Jeuring, Loeh).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Comparing Approaches to Generic Programming in Haskell (Hinze, Jeuring, Loeh).pdf -------------------------------------------------------------------------------- /Haskell/Composing Haggis (Finne, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Composing Haggis (Finne, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Comprehending Monads (Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Comprehending Monads (Wadler).pdf -------------------------------------------------------------------------------- /Haskell/Computational Lambda-Calculus and Monads (Moggi).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Computational Lambda-Calculus and Monads (Moggi).pdf -------------------------------------------------------------------------------- /Haskell/Concurrent Haskell (Peyton Jones, Gordon, Finne).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Concurrent Haskell (Peyton Jones, Gordon, Finne).pdf -------------------------------------------------------------------------------- /Haskell/Denotational design with type class morphisms (Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Denotational design with type class morphisms (Elliott).pdf -------------------------------------------------------------------------------- /Haskell/Derivable Type Classes (Hinze, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Derivable Type Classes (Hinze, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Description of the LOLITA system as Used in MUC-7 (Garigliano, Urbanowicz, Nettleton).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Description of the LOLITA system as Used in MUC-7 (Garigliano, Urbanowicz, Nettleton).pdf -------------------------------------------------------------------------------- /Haskell/Design Patterns as Higher-Order Datatype-Generic Programs (Gibbons).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Design Patterns as Higher-Order Datatype-Generic Programs (Gibbons).pdf -------------------------------------------------------------------------------- /Haskell/Deterministic, Error-Correcting Combinator Parsers (Swierstra, Duponcheel).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Deterministic, Error-Correcting Combinator Parsers (Swierstra, Duponcheel).pdf -------------------------------------------------------------------------------- /Haskell/Domain Specific Embedded Compilers (Leijen, Meijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Domain Specific Embedded Compilers (Leijen, Meijer).pdf -------------------------------------------------------------------------------- /Haskell/Efficient Combinator Parsers (Koopman, Plasmeijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Efficient Combinator Parsers (Koopman, Plasmeijer).pdf -------------------------------------------------------------------------------- /Haskell/Fast, Error Correcting Parser Combinators - A Short Tutorial (Swierstra, Alcocer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Fast, Error Correcting Parser Combinators - A Short Tutorial (Swierstra, Alcocer).pdf -------------------------------------------------------------------------------- /Haskell/Finger trees - a simple general-purpose data structure (Hinze, Paterson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Finger trees - a simple general-purpose data structure (Hinze, Paterson).pdf -------------------------------------------------------------------------------- /Haskell/Free Theorems in the Presence of seq (Johann, Voigtlaender).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Free Theorems in the Presence of seq (Johann, Voigtlaender).pdf -------------------------------------------------------------------------------- /Haskell/Fudgets - A Graphical User Interface in a Lazy Functional Language (Carlsson, Hallgren).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Fudgets - A Graphical User Interface in a Lazy Functional Language (Carlsson, Hallgren).pdf -------------------------------------------------------------------------------- /Haskell/Fun with Functional Dependencies (Hallgren).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Fun with Functional Dependencies (Hallgren).pdf -------------------------------------------------------------------------------- /Haskell/Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v3).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Fun with Type Functions (Kiselyov, Peyton Jones, Shan) (v3).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/A Poor Man's Concurrency Monad (Claessen).ps: -------------------------------------------------------------------------------- 1 | %!PS-Adobe-2.0 2 | %%Creator: dvipsk 5.58e Copyright 1986, 1994 Radical Eye Software 3 | %%Pages: 11 4 | %%PageOrder: Ascend 5 | %%BoundingBox: 0 0 596 842 6 | %%EndComments 7 | %DVIPSCommandLine: dvips -f 8 | %DVIPSParameters: dpi=300, comments removed 9 | %DVIPSSource: TeX output 1997.10.15:1724 10 | %%BeginProcSet: tex.pro 11 | /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N 12 | /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 13 | mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} 14 | ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale 15 | isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div 16 | hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul 17 | TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} 18 | forall round exch round exch]setmatrix}N /@landscape{/isls true N}B 19 | /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B 20 | /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ 21 | /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N 22 | string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N 23 | end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ 24 | /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] 25 | N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup 26 | length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 27 | 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub 28 | get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data 29 | dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N 30 | /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup 31 | /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 32 | 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff 33 | setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff 34 | .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} 35 | if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup 36 | length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ 37 | cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 38 | 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul 39 | add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict 40 | /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook 41 | known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X 42 | /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 43 | 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 44 | 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V 45 | {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 46 | getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} 47 | ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false 48 | RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 49 | false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform 50 | round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg 51 | rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail 52 | {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} 53 | B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 54 | 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ 55 | p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p 56 | a}B /bos{/SS save N}B /eos{SS restore}B end 57 | %%EndProcSet 58 | TeXDict begin 39158280 55380996 1000 300 300 () @start 59 | /Fa 22 120 df45 DI<0004000C001800 60 | 18001800300030003000600060006000C000C000C0018001800180030003000300060006 61 | 0006000C000C000C00180018001800300030003000600060006000C000C0000E257E9B13 62 | >I58 D<0FC03FF07878603840 63 | 1C001C001C00FC0FFC3F1C781CE01CE01CE01C707C7FFC1F9C0E117F9012>97 64 | D<000E000E000E000E000E000E000E000E000E07CE0FFE1C1E380E700E700EE00EE00EE0 65 | 0EE00EE00E700E700E381E3C3E1FEE07CE0F1A7F9914>100 D<07C01FF03C7070187018 66 | E00CE00CFFFCFFFCE000E0006000700038003C0C1FFC07F00E117F9011>I<03F007F00E 67 | 101C001C001C001C001C001C00FFC0FFC01C001C001C001C001C001C001C001C001C001C 68 | 001C001C001C001C001C000C1A80990C>I<0787801FFF80387C00387000703800703800 69 | 7038007038003870003870003FE0007780007000007000003FF0003FFC003FFE00700F00 70 | E00700E00700E00700700E00781E001FF80007E00011197F9013>III 75 | 107 DI< 76 | E3C0F0EFF3FCF8761CF03C0EF03C0EE0380EE0380EE0380EE0380EE0380EE0380EE0380E 77 | E0380EE0380EE0380EE0380EE0380E17117D901E>II<07E01FF83C3C381C70 79 | 0E6006E007E007E007E007E007F00F700E781E3C3C1FF807E010117F9013>II114 D<1F803FE07060E000E000E000F800 83 | 7F803FC007E000F000708070C070F0E07FC01F800C117F900F>I<3800380038003800FF 84 | C0FFC038003800380038003800380038003800380038003800380038601FE00F800B157F 85 | 940E>II119 88 | D E /Fb 19 120 df46 D<00010003000600060006000C000C000C 89 | 0018001800180030003000300060006000C000C000C00180018001800300030003000600 90 | 06000C000C000C00180018001800300030003000600060006000C000C00010297E9E15> 91 | I58 D<003FC001FFF803C0F8 92 | 0780180F00001E00003C00003C0000780000780000780000F00000F00000F00000F00000 93 | F00000F00000F00000F00000F000007800007800007800003C00003C00001E00000F0008 94 | 07801803C07801FFF0003F80151F7D9D1B>67 D<0FC03FF07FF87038401C001C001C00FC 95 | 0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 96 | D<03F00FFC1FFE3C0E78027000E000E000E000E000E000E000700078023C0E1FFE0FFC03 97 | F00F127F9112>99 D<0007000700070007000700070007000700070007000707C71FF73F 98 | FF3C1F78077007E007E007E007E007E007E0077007780F3C1F3FFF1FF707C7101D7F9C15 99 | >I<07E00FF03FF83C3C700C700EFFFEFFFEFFFEE000E000E000700078023C0E1FFE0FFC 100 | 03F00F127F9112>I104 D107 104 | D 105 | III<03F0000FFC001FFE003C0F00780780700380E001C0 109 | E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012127F 110 | 9115>II114 113 | D<1FC03FF07FF0F030E000E000F0007F003FC01FE001F0003800388038F078FFF07FE01F 114 | C00D127F9110>I<1C001C001C001C001C001C00FFE0FFE01C001C001C001C001C001C00 115 | 1C001C001C001C001C001C001C201FF00FF007C00C187F970F>I119 118 | D E /Fc 40 119 df<183C3C1C08080810204080060B78990C>39 119 | D45 D<3078F06005047C830C>I<007C0001860002030004 120 | 03800483800883801083801083801083801107001207000C0E00001C0000300000600001 121 | 80000200000C00001001002001003C060067FE00C1FC0080F00011187D9714>50 122 | D<003E0000C3000101800201800481C00441C0088380048380070300000600000C0001F0 123 | 00001800000C00000C00000E00000E00600E00E01C00E01C0080380040300020E0001F80 124 | 0012187D9714>I<03018003FF0003FC000220000400000400000400000400000800000B 125 | E0000C1800081800001C00001C00001C00001C00201C00701C00E0380080300040700040 126 | E0002180001E000011187C9714>53 D<001E000061800180800303800603800E00001C00 127 | 0018000038000039F000721800740C00780E00700E00F00E00E00E00E00E00E00E00E01C 128 | 00E01C0060380060700030C0001F800011187C9714>I<09C04017E0801FF1803C1F0030 129 | 0200600600400400800C0000080000180000300000300000700000600000E00000C00001 130 | C00001C00001800003800003800003800007000003000012187B9714>I<007C00018600 131 | 0703000E03000C03801C0380380380380380380380380780380700380F001817000C2700 132 | 07CE00000E00000C00001C00001800E03000E0600080C000C380003E000011187C9714> 133 | 57 D<0000200000600000E00000E00001E00001F0000270000270000470000870000870 134 | 00107000107000207000407000407000803800FFF8010038020038020038040038040038 135 | 080038180038FE01FF181A7E991D>65 D<000F8200706200C01603801E07000C0E000C1C 136 | 000C18000C380008300008700000700000E00000E00000E00000E00000E00020E00020E0 137 | 0020E000406000406000803001001006000C180003E000171A7A991B>67 138 | D<03FFFF00700700700300700100E00100E00100E00100E00101C08001C08001C08001C1 139 | 8003FF000381000381000381000702000700000700000700000E00000E00000E00000E00 140 | 001E0000FFC000181A7D9919>70 D<000FC100302100C01301800F0700060E00060C0006 141 | 180006380004300004700000700000E00000E00000E00000E007FEE00070E00070E00070 142 | E000706000E06000E03000E01801E00C064003F840181A7A991E>I<03FF1FF800700380 143 | 007003800070038000E0070000E0070000E0070000E0070001C00E0001C00E0001C00E00 144 | 01C00E0003FFFC0003801C0003801C0003801C0007003800070038000700380007003800 145 | 0E0070000E0070000E0070000E0070001C00E000FF87FC001D1A7D991D>I<03FF007000 146 | 70007000E000E000E000E001C001C001C001C0038003800380038007000700070007000E 147 | 000E000E000E001C00FF80101A7D990F>I<03FF0000700000700000700000E00000E000 148 | 00E00000E00001C00001C00001C00001C000038000038000038000038000070000070010 149 | 0700100700200E00200E00600E00400E00C01C0380FFFF80141A7D9918>76 150 | D<001F8000706001C03003001806001C0E000C1C000C18000E38000E30000E70000E7000 151 | 0EE0001CE0001CE0001CE00038E00038E00030E00070E000E0E000C06001807003003806 152 | 001C1C0007E000171A7A991D>79 D<03FFF800701C00700600700700E00700E00700E007 153 | 00E00701C00E01C00E01C01C01C03803806003FF80038000038000070000070000070000 154 | 0700000E00000E00000E00000E00001C0000FF8000181A7D991A>I<03FFF000701C0070 155 | 0E00700700E00700E00700E00700E00701C00E01C01C01C03801C0E003FF800380C00380 156 | 600380700700700700700700700700700E00E00E00E00E00E10E00E21C0062FF803C181A 157 | 7D991C>82 D<3FFFFC381C0C201C04401C04403804803804803804803804007000007000 158 | 00700000700000E00000E00000E00000E00001C00001C00001C00001C000038000038000 159 | 038000038000078000FFF800161A79991B>84 D87 D<03CC0E2E181C381C301C701CE038E038E038E038C072 164 | C072C07260F261341E180F107C8F14>97 D<01E006180C181838301070006000E000E000 165 | E000E000E008E010602030C01F000D107C8F12>99 D<001F800003800003800003800007 166 | 00000700000700000700000E00000E0003CE000E2E00181C00381C00301C00701C00E038 167 | 00E03800E03800E03800C07200C07200C0720060F2006134001E1800111A7C9914>I<01 168 | E00E181C08380870087010FFE0E000E000E000E000E0086010602030C01F000D107C8F12 169 | >I<000700000980001B80003B0000380000300000700000700000700000700007FF0000 170 | E00000E00000E00000E00000E00001C00001C00001C00001C00001C00003800003800003 171 | 8000038000030000070000070000060000660000E40000CC0000700000112181990C>I< 172 | 00F300038B800607000E07000C07001C0700380E00380E00380E00380E00301C00301C00 173 | 301C00183C0018780007B800003800003800007000607000E0E000C1C0007F000011177E 174 | 8F12>I<1F80000380000380000380000700000700000700000700000E00000E00000E7C 175 | 000F86001E07001E07001C07001C0700380E00380E00380E00381C00701C80701C807038 176 | 80703900E01900600E00111A7E9914>I<030706000000000000384C4E8E9C9C1C383870 177 | 7272E2E4643808197C980C>I<1F8003800380038007000700070007000E000E000E0E0E 178 | 131C271C431C801F003C003F8039C038E070E270E270E270E4E0646038101A7E9912> 179 | 107 D<1F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D990A>I< 180 | 307C1E00598663009E0783809E0703809C0703809C070380380E0700380E0700380E0700 181 | 380E0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F1F>I<30 182 | 7C005986009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C8070 183 | 3880703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600EE00EE00E 184 | E00CE01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C06009C060 185 | 09C0600380E00380E00380E00380E00701C00701800703800703000E8E000E78000E0000 186 | 0E00001C00001C00001C00001C0000FF00001317808F14>I<30F05D189E389C189C009C 187 | 0038003800380038007000700070007000E00060000D107C8F10>114 188 | D<03E004300830187018601C001F801FC00FE000E00060E060E06080C041803E000C107D 189 | 8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800700070007000 190 | 7000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E0E9C0E9C0E1C1C38 191 | 1C381C381C7039703970393079389A0F0C10107C8F15>I<38184C1C4E1C8E0C9C0C9C0C 192 | 1C08380838083810701070107020304018C00F000E107C8F12>I 193 | E /Fd 1 99 df<07801FE0387060186018C00CC00CC00CC00C6018601838701FE007800E 194 | 0E87860C>98 D E /Fe 1 110 df<30F87C00590C86004E0D06009C0E0600980C060018 195 | 0C0600180C060030180C0030180C8030181880301818806030190060300E00190D7F8C1D 196 | >109 D E /Ff 3 123 df<3C62C3C3C040603866C2C3C343661C060203C3C3463C08167D 197 | 900E>120 D<1818181818FFFF18181818181818181818181818181808167D900E>I<1818 198 | 181818FF18181818180018181818FFFF1818181808167D900E>I 199 | E /Fg 29 118 df<00007F800001C06000078070000700F0000F01F0000F01F0001E00E0 200 | 001E0000001E0000001E0000001E000003FFFFC003FFFFC0003C03C0003C03C0003C0780 201 | 00780780007807800078078000780F0000780F0000F00F0000F00F1000F01E3000F01E30 202 | 00F01E3000E01E6001E00E4001E0078001E0000001C0000073C00000FBC00000FB800000 203 | F3000000E60000003C0000001C25819C1C>12 D<387CFCFCF87006067B850F>46 204 | D<00030002000E001E007E07FC0FFC007C007C00F800F800F800F801F001F001F001F003 205 | E003E003E003E007C007C007C007C0FFFCFFFC101B7B9A19>49 D<003F0000C1C00180E0 206 | 0200F00640F00C20F81820F81820F81820F83041F03081F01103E00E03C0000780000F00 207 | 001C0000780001E0000380000600000C00301800603001E07FFFC061FF80C0FF00C03E00 208 | 151B7C9A19>I<001FC000E0E00180700300780640780C20780C20780C20780C40700780 209 | F00001E00003C000FF8000FC000007000007800007C00007C01007C07807C07C07C0F80F 210 | 80F80F80600F00601E003078000FE000151B7C9A19>I<0001C00003C00003C00003C000 211 | 03C0000780000780000700000F00000F00001E00001E00001C0000380000780000700000 212 | E00000E60001CF00038F00070F000E1E001C1E00381E007F1E00FFFC0080FFC0003F8000 213 | 3C0000780000780000780000780000F00000600012237D9A19>I<0000060000000E0000 214 | 001E0000001E0000003F0000003F0000007F000000FF000000FF000001BF000003BF0000 215 | 033F0000063F8000061F80000C1F8000181F8000181F8000301F8000701F80007FFF8000 216 | FFFFC000C00FC001800FC003000FC003000FC006000FC07FC0FFFCFFC0FFFC1E1C7E9B24 217 | >65 D<0003FC0C001FFF1C007F03F800F800F803F0007807E000780FC000300F8000301F 218 | 0000303F0000303F0000007E0000007E0000007E000000FC000000FC000000FC000000FC 219 | 000000FC000180FC000180FC0001807C0003007C0006003E000C001F0018000FC0700007 220 | FFC00000FF00001E1C7A9B22>67 D<01FFF803FFF8003F00003F00003F00003F00007E00 221 | 007E00007E00007E0000FC0000FC0000FC0000FC0001F80001F80001F80001F80003F000 222 | 03F00003F00003F00007E00007E00007E00007E000FFFE00FFFC00151C7E9B14>73 223 | D<01FFFC03FFFC003F00003F00003F00003F00007E00007E00007E00007E0000FC0000FC 224 | 0000FC0000FC0001F80001F80001F80001F80303F00603F00603F00E03F00C07E01C07E0 225 | 1C07E07807E0F8FFFFF0FFFFF0181C7D9B1D>76 D<01FF80003FF003FF80007FF0003F80 226 | 00FE000037C000FE000037C001BE000037C0033E000067C0037C000067C0067C000067C0 227 | 067C000067C00C7C0000C7E018F80000C3E018F80000C3E030F80000C3E060F8000183E0 228 | 61F0000183E0C1F0000183E181F0000183E181F0000301F303E0000301F603E0000301F6 229 | 03E0000301FC03E0000601FC07C0000601F807C0000601F007C0000600F007C000FFE0E0 230 | FFFC00FFC0C0FFF8002C1C7D9B2D>I<0007F800001E0F000078078001F003C003E003E0 231 | 07C003E00F8001F01F8001F01F0001F03F0003F03E0003F07E0003F07E0003F07E0003F0 232 | FC0007E0FC0007E0FC0007E0FC000FC0FC000FC0FC000F80FC001F80FC001F007C003E00 233 | 7C007C003C00F8001E01E0000F87C00001FE00001C1C7A9B23>79 234 | D<000FE180003FFB8000F03F0001E00F0001C0070003C00700038006000780060007C000 235 | 0007E0000007FE000007FFC00007FFE00003FFF00001FFF800007FF800000FF8000000F8 236 | 000000F8000000780030007800300070007000F0007000E0007801C0007E078000EFFF00 237 | 00C3FC0000191C7D9B1B>83 D<0FFFFFE00FFFFFE01E0FC1E01C0FC0C0380FC0C0300FC0 238 | C0301F80C0601F80C0601F80C0601F80C0003F0000003F0000003F0000003F0000007E00 239 | 00007E0000007E0000007E000000FC000000FC000000FC000000FC000001F8000001F800 240 | 0001F8000001F80000FFFFC000FFFFC0001B1C799B21>I<00F980038FC00F07C01E03C0 241 | 3E07803C07807C07807C0780F80F00F80F00F80F00F80F10F01E30F01E30F01E30703E60 242 | 38EE400F878014127C9119>97 D<00FC000383000F07001E0F803E1F003C0F007C04007C 243 | 0000F80000F80000F80000F80000F80000F00200700700780E003838000FE00011127C91 244 | 16>99 D<0003F80003F80000780000F00000F00000F00000F00001E00001E00001E00001 245 | E000FBC0038FC00F07C01E03C03E07803C07807C07807C0780F80F00F80F00F80F00F80F 246 | 10F01E30F01E30F01E30703E6038EE400F8780151D7C9C19>I<00FC000382000F03001E 247 | 01803E03003C03007C06007C7C00FFC000F80000F80000F80000F80000F8020078070038 248 | 0E001C38000FE00011127C9116>I<0001F800039C00073C000F7C000F7C000F38001E00 249 | 001E00001E00001E00001E0003FFF003FFE0003C00003C00003C00007C00007800007800 250 | 00780000780000780000F00000F00000F00000F00000F00001E00001E00001E00001E000 251 | 71C000FBC000FB8000F30000E600003C00001625819C11>I<003E6000E3F003C1F00780 252 | F00F81E00F01E01F01E01F01E03E03C03E03C03E03C03E03C03C07803C07803C07801C0F 253 | 800E3F0003EF00000F00000F00701E00F81E00F81C00F03800E0F0003FC000141A7E9116 254 | >I<00E001F001F001E000C000000000000000000000000000000F00138023C063C04780 255 | C78007800F000F000F001E001E203C603C603C4038C019800F000C1E7D9D0F>105 256 | D<1E07E0FC003318718E0063A07A0F0063C07C0F00C7C0780F00C780780F000780780F00 257 | 0780780F000F00F01E000F00F01E000F00F01E000F00F03C201E01E03C601E01E03C601E 258 | 01E078401E01E078C03C03C039801801801E0023127D9127>109 259 | D<1E0FC03318E063A0F063C0F0C780F0C780F00780F00780F00F01E00F01E00F01E00F03 260 | C21E03C61E03C61E07841E078C3C03981801E017127D911B>I<00FE0003C3800701C01E 261 | 01E01E01E03C01E07C01F07C01F0F803E0F803E0F803E0F803C0F807C0F00780780F0078 262 | 1E003C3C000FE00014127C9119>I<0783E00CCC3018F83818F03C31E03C31E03E01E03E 263 | 01E03E03C07C03C07C03C07C03C0780780F80780F00781E00781C00FC3800F3E000F0000 264 | 0F00001E00001E00001E00001E0000FF8000FF8000171A7F9119>I<1E1F0033A18063C1 265 | C063C3C0C787C0C787C00783800780000F00000F00000F00000F00001E00001E00001E00 266 | 001E00003C000018000012127D9115>114 D<01F8020604060C0F1C1E1C0C1F800FF00F 267 | F803FC007C300E780CF80CF808F01870301FC010127D9114>I<018003C003C003C00780 268 | 078007800780FFF0FFF00F000F001E001E001E001E003C003C003C003C10783078307860 269 | 78C039801F000C1A7D9910>I<0F00601180F021C0F063C0F043C1E0C3C1E00781E00781 270 | E00F03C00F03C00F03C00F03C40E078C1E078C0E078C0E0F98071B9003E1E016127D911A 271 | >I E /Fh 4 123 df<040E0E1C1C1C38383070706060C0C0070F7F8F0A>48 272 | D<1E0061004080C180C000C00040002000180036006300C180C180C180C180630036000C 273 | 000200010001800180C180810043003C00091A7E930F>120 D<0C000C000C000C000C00 274 | 0C00FFC0FFC00C000C000C000C000C000C000C000C000C000C000C000C000C000C000C00 275 | 0C000C000C000A1A7E9310>I<0C000C000C000C000C000C00FFC00C000C000C000C000C 276 | 000C0000000C000C000C000C000C00FFC0FFC00C000C000C000C000C000A1A7E9310>I 277 | E /Fi 4 53 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C 278 | 000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070006000 279 | C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC03070703870387038 280 | 0038003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I<00 281 | 6000E000E00160026006600C600860106020606060C060FFFC0060006000600060006003 282 | FC0E137F9211>I E /Fj 5 107 df<0F8000201FE000203FF80020707C0060E01F00E0C0 283 | 07C1C08003FF808000FF0080003E001B097E8E20>24 D<00C00000000180000000018000 284 | 000001800000000300000000030000000006000000000C000000001C0000000030000000 285 | 00FFFFFFFFF0FFFFFFFFF030000000001C000000000C0000000006000000000300000000 286 | 030000000001800000000180000000018000000000C000000024167D942A>32 287 | D<00000030000000001800000000180000000018000000000C000000000C000000000600 288 | 0000000300000000038000000000C0FFFFFFFFF8FFFFFFFFF800000000C0000000038000 289 | 0000030000000006000000000C000000000C000000001800000000180000000018000000 290 | 00300025167E942A>I<000003000000000300000000018000000001C000000000C00000 291 | 000060007FFFFFF000FFFFFFF8000000000E00000000070000000001E000000000780000 292 | 0001E0000000038000000006000000000C00FFFFFFF8007FFFFFF0000000006000000000 293 | C000000001800000000180000000030000000003000025187E952A>41 294 | D106 D E /Fk 18 122 df<00F800030C000E06041C070438 296 | 0308300388700390700390E003A0E003A0E003C0E00380E00380E00380600780600B8830 297 | 71900F80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E0080 298 | 1C01001C010018010038020FF00210C0020FE00200300400300400300400380400380800 299 | 700800700800700800E01800E01801C0140180140300230E0020F8002000002000004000 300 | 0040000040000040000080000080000017257F9C17>I<07800001C00001E00000E00000 301 | E00000F000007000007000007800003800003800003C00001C00001C00001E00000E0000 302 | 1E00003F0000670000C7000187800303800603800E03C01C01C03801C07001E0E000E0C0 303 | 00F0141D7E9C18>21 D<0FFFE01FFFE03FFFE060C00040C0008080000080000180000180 304 | 000180000300000300000300000700000700000700000E000006000013127E9112>28 305 | D<60F0F06004047C830C>58 D<60F0F0701010101020204080040C7C830C>I<00200000 306 | 2000002000002000002000002000007000C070187C71F00FFF8003FE0000F80000F80001 307 | DC00018C000306000202000603000C01800800801514809315>63 308 | D<0001F808000E061800380138006000F001C0007003800070070000300F0000200E0000 309 | 201C0000203C0000203C000000780000007800000078000000F0000000F0000000F00000 310 | 00F0000000F0000100F0000100F0000100700002007000020030000400380008001C0010 311 | 000E0060000701800000FE00001D1E7E9C1E>67 D<01E3000717000C0F00180F00380E00 312 | 300E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E03880607880319900 313 | 1E0E0011127E9116>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A 314 | 303C1838187018701C701C701CE038E038E038E030E070E060E0C061C023001E000E1D7E 315 | 9C12>I<01F0030C0C0C1C1E383C301870007000E000E000E000E000E000E00460086010 316 | 30601F800F127E9112>I<0001E0000630000E78000EF0001C60001C00001C00001C0000 317 | 1C0000380000380003FFC000380000380000700000700000700000700000700000E00000 318 | E00000E00000E00000E00001C00001C00001C00001C00001C00001800003800003800063 319 | 0000F30000F60000E4000078000015257E9C14>102 D<0FC00001C00001C00003800003 320 | 80000380000380000700000700000700000700000E07000E08800E11C00E23C01C47801C 321 | 83001D00001E00003FC00038E000387000387000707100707100707100707200E0320060 322 | 1C00121D7E9C16>107 D<381F81F04E20C6184640E81C4680F01C8F00F01C8E00E01C0E 323 | 00E01C0E00E01C1C01C0381C01C0381C01C0381C01C0703803807138038071380380E138 324 | 0380E2700700643003003820127E9124>109 D<01F0060C0C040C0E180C1C001F000FE0 325 | 0FF003F80038201C7018F018F010803060601F800F127E9113>115 326 | D<1C03270747074703870187010E010E011C021C021C021C041804180818081C100C2007 327 | C010127E9114>118 D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C0 328 | 0001C00001C00001C000638080F38080F38100E5810084C60078780013127E9118>120 329 | D<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07001C07 330 | 00180E00180E00180E001C1E000C3C0007DC00001C00001800603800F03000F06000E0C0 331 | 004180003E0000121A7E9114>I E /Fl 37 123 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0 332 | F0F0600000000060F0F0600419779816>33 D<70F8F8F8700505788416>46 333 | D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C 334 | 00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007E0FC0FF1F 335 | E07E0FC013197F9816>65 D<01F18007FB800FFF801F0F803C0780380380700380700380 336 | F00000E00000E00000E00000E00000E00000E00000E00000F00000700380700380380380 337 | 3C07001F0F000FFE0007FC0001F00011197E9816>67 D<7FFFE0FFFFE07FFFE01C00E01C 338 | 00E01C00E01C00E01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C 339 | 00001C00001C00001C00001C00001C00007F8000FFC0007F800013197F9816>70 340 | D<7FFCFFFE7FFC0380038003800380038003800380038003800380038003800380038003 341 | 8003800380038003807FFCFFFE7FFC0F197D9816>73 D<01FF0003FF8001FF00001C0000 342 | 1C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000 343 | 1C00001C00001C00601C00F01C00F038007FF8007FF0001FC00011197E9816>I77 D<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CE1C01C 347 | E1C01C61C01C71C01C71C01C71C01C31C01C39C01C39C01C19C01C1DC01C0DC01C0DC01C 348 | 0DC07F07C0FF87C07F03C01519809816>I<1FFC003FFE007FFF00780F00F00780E00380 349 | E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380 350 | E00380F00780F00780780F007FFF003FFE001FFC0011197E9816>I<07E3001FFF003FFF 351 | 00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC0000FE00000F 352 | 00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F00011197E9816 353 | >83 D<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E000 354 | 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC00 355 | 0FFE0007FC0013197F9816>I86 D<7E03F0FF07F87E03F03800E0 358 | 3800E03800E03800E01C01C01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00CD980 359 | 0CD9800CD9800DDD800D8D800D8D800D8D80078F00078F000707001519809816>I<1FE0 360 | 003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E 361 | 00E00E00783E007FFFE03FE7E00F83E013127E9116>97 DI<03F8 364 | 0FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F01012 365 | 7D9116>I<003F00003F00003F0000070000070000070000070003C7000FF7001FFF003C 366 | 1F00780F00700700E00700E00700E00700E00700E00700E00700700F00780F003C1F001F 367 | FFE00FF7E007C7E013197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380 368 | FFFF80FFFF80FFFF80E00000E000007003807803803E07801FFF0007FE0001F80011127E 369 | 9116>I<001E00007F0001FF8001C7800383000380000380007FFF00FFFF00FFFF000380 370 | 000380000380000380000380000380000380000380000380000380000380000380007FFC 371 | 00FFFE007FFC0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E0038 372 | 0E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E0 373 | 00E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>II<03000780078003000000000000000000FF80FF80FF8003800380038003 377 | 8003800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<7E0000FE0000 378 | 7E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E7800 379 | 0EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F0141980 380 | 9816>107 D<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C000 381 | 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 382 | 7FFF00FFFF807FFF0011197E9816>III<03E0000FF800 386 | 1FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00 387 | 3C1E001FFC000FF80003E00011127E9116>II<7F 390 | 0FC0FF3FE07F7FE007F04007C00007800007800007000007000007000007000007000007 391 | 00000700000700007FFC00FFFC007FFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01C 392 | E01C70007F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<030000 393 | 0700000700000700000700007FFF00FFFF00FFFF00070000070000070000070000070000 394 | 07000007000007010007038007038007038007870003FE0001FC0000F80011177F9616> 395 | II119 D<7F1FC07F3FC07F1FC00F1E00073C0003B80003 399 | F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013 400 | 127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00 401 | 039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C000 402 | 79C0007BC0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F 403 | 00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFF 404 | C0FFFFC012127F9116>I E /Fm 31 122 df<0001F03C00071C47000C1CC7000C19C600 405 | 1C0180001C0380001803800038038000380380003807000038070003FFFFF00070070000 406 | 7007000070070000700E0000700E0000E00E0000E00E0000E00E0000E01C0000E01C0001 407 | C01C0001C01C0001C01C0001C0380001C038000380380003803800038030000300700003 408 | 00700007006000C630E000E638C000CC318000781E00002025819C19>11 409 | D<0000FE000003018000060180000C0380001C0180001C00000018000000380000003800 410 | 00003800000038000003FFFE0000700E0000700E0000700E0000701C0000701C0000E01C 411 | 0000E01C0000E0380000E0380000E0380001C0380001C0720001C0720001C0720001C072 412 | 00038034000380180003800000030000000300000007000000C6000000E6000000CC0000 413 | 00780000001925819C17>I45 D<3078F06005047C830D>I< 414 | 0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E000080 415 | 1C0000803C0000803C000000780000007800000078000000F0000000F0000000F0000000 416 | F0000000F0000400F0000400F0000400F000080070000800700010003800200018004000 417 | 0C0180000706000001F800001B1E7A9C1E>67 D<01FFFFF0003C00F00038003000380020 418 | 00380020003800200070002000700020007008200070080000E0100000E0100000E03000 419 | 00FFF00001C0200001C0200001C0200001C0200003804000038000000380000003800000 420 | 070000000700000007000000070000000F000000FFF000001C1C7E9B1B>70 421 | D<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000 422 | 801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001FF 423 | 80F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078 424 | 000C0090000707100001F800001B1E7A9C20>I<01FFC3FF80003C007800003800700000 425 | 3800700000380070000038007000007000E000007000E000007000E000007000E00000E0 426 | 01C00000E001C00000E001C00000FFFFC00001C003800001C003800001C003800001C003 427 | 8000038007000003800700000380070000038007000007000E000007000E000007000E00 428 | 0007000E00000F001E0000FFE1FFC000211C7E9B1F>I<01FFC07F80003C001E00003800 429 | 180000380020000038004000003800800000700200000070040000007008000000701000 430 | 0000E040000000E0C0000000E1C0000000E2E0000001C4E0000001D070000001E0700000 431 | 01C070000003803800000380380000038018000003801C000007001C000007000E000007 432 | 000E000007000E00000F000F0000FFE07FC000211C7E9B20>75 D<1FFFFFC01C0701C030 433 | 0E00C0200E0080600E0080400E0080401C0080801C0080801C0080001C00000038000000 434 | 38000000380000003800000070000000700000007000000070000000E0000000E0000000 435 | E0000000E0000001C0000001C0000001C0000001C0000003C000007FFE00001A1C799B1E 436 | >84 D<01E307170C0F180F380E300E700E700EE01CE01CE01CE01CE039E039E039607931 437 | 9A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A 438 | 183C0C380C700C700E700E700EE01CE01CE01CE018E038E030E06060C031801E000F1D7C 439 | 9C13>I<00F803040E041C0E181C300070007000E000E000E000E000E000E00460086010 440 | 30600F800F127C9113>I<0007E00000E00000E00001C00001C00001C00001C000038000 441 | 038000038000038001E7000717000C0F00180F00380E00300E00700E00700E00E01C00E0 442 | 1C00E01C00E01C00E03900E03900E03900607900319A001E0C00131D7C9C15>I<00F807 443 | 040C0418023804300470087FF0E000E000E000E000E00060046008301030600F800F127C 444 | 9113>I<0003C0000670000C70001C60001C00001C000038000038000038000038000038 445 | 0003FF8000700000700000700000700000700000E00000E00000E00000E00000E00001C0 446 | 0001C00001C00001C00001C000038000038000038000030000030000070000C60000E600 447 | 00CC00007800001425819C0D>I<0078C001C5C00303C00603C00E03800C03801C03801C 448 | 0380380700380700380700380700380E00380E00380E00181E000C7C00079C00001C0000 449 | 1C00003800003800C03000E07000C1C0007F0000121A7E9113>I<018003800100000000 450 | 00000000000000000000001C002600470047008E008E000E001C001C001C003800380071 451 | 0071007100720072003C00091C7C9B0D>105 D<0FC00001C00001C00003800003800003 452 | 80000380000700000700000700000700000E07800E08800E11C00E21C01C41801C80001D 453 | 00001E00003FC00038E000387000387000707100707100707100707200E03200601C0012 454 | 1D7E9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C001C00 455 | 1C0038003800380038007000700070007000E200E200E200E40064003800091D7D9C0B> 456 | I<1C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701 457 | C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01 458 | C01D127C9122>I<383E004CC3004D03804E03809E03809C03801C03801C038038070038 459 | 0700380700380E00700E40700E40701C40701C80E00C8060070012127C9117>I<00F800 460 | 030C000E06001C0300180300300300700380700380E00700E00700E00700E00E00E00E00 461 | E01C0060180060300030E0000F800011127C9115>I<03878004C86004D03004E03009C0 462 | 3009C03801C03801C0380380700380700380700380600700E00700C00701800783000E86 463 | 000E78000E00000E00001C00001C00001C00001C0000380000FF0000151A809115>I<1C 464 | 3C2642468747078E068E000E000E001C001C001C001C0038003800380038007000300010 465 | 127C9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030 466 | C030806060C01F000E127D9111>I<03000700070007000E000E000E000E00FFE01C001C 467 | 001C0038003800380038007000700070007000E080E080E100E100660038000B1A7C990E 468 | >I<1C01802E03804E03804E03808E07008E07001C07001C0700380E00380E00380E0038 469 | 0E00301C80301C80301C80383C80184D000F860011127C9116>I<1C062E0E4E064E068E 470 | 028E021C021C023804380438043808300830083010382018400F800F127C9113>I<1E01 471 | 832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C 472 | 04181C04181C081C1E080C263007C3C018127C911C>I<1C01802E03804E03804E03808E 473 | 07008E07001C07001C0700380E00380E00380E00380E00301C00301C00301C00383C0018 474 | 78000FB800003800003000007000E06000E0C0008180004300003C0000111A7C9114> 475 | 121 D E /Fn 15 118 df70 D77 D86 D<1FC0007FF00070780020 482 | 1800001C00001C0007FC001FFC003C1C00701C00E01C00E01C00E01C00707C003FFF800F 483 | 8F8011107E8F14>97 D<03F80FFE1C0E380470006000E000E000E000E00060007000380E 484 | 1C1E0FFC03F00F107E8F14>99 D<007E00007E00000E00000E00000E00000E00000E0007 485 | CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E0030 486 | 1E00383E001FEFC007CFC012177F9614>I<00FC01FE038E07040700070007007FFEFFFE 487 | 070007000700070007000700070007000700070007000700FFF8FFF80F177F9614>102 488 | D107 D109 492 | DI<07C01FF03C78701C701CE00EE00EE00E 494 | E00EE00EE00E701C783C3C781FF007C00F107E8F14>II114 D<06000E000E000E000E007FFCFFFC0E000E000E000E 499 | 000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F157F9414>116 500 | DI E /Fo 67 128 df<00FE7C0381C60603 502 | CE0E03841C03801C03801C03801C03801C03801C0380FFFFF01C03801C03801C03801C03 503 | 801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF0171A 504 | 809916>11 D<00FE000381000601800E03801C01001C00001C00001C00001C00001C0000 505 | FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380 506 | 1C03801C03801C0380FF8FF0141A809915>I<01C0000003200000061000000E1000000E 507 | 1000000E1000000E1000000E2000000E4000000E40000007807F8007001E000700080007 508 | 8010000B80100011C0200031E0200060E0400060708000E0788000E03D0000E01E0080E0 509 | 0E0080701F01003861C3000F807C00191A7E991E>38 D<00800100020004000C00080018 510 | 003000300030006000600060006000E000E000E000E000E000E000E000E000E000E00060 511 | 00600060006000300030003000180008000C00040002000100008009267D9B0F>40 512 | D<8000400020001000180008000C00060006000600030003000300030003800380038003 513 | 8003800380038003800380038003000300030003000600060006000C0008001800100020 514 | 004000800009267E9B0F>I<60F0F07010101020204040040B7D830B>44 515 | DI<60F0F06004047D830B>I<0004000C00180018001800300030 516 | 003000600060006000C000C000C00180018001800300030003000600060006000C000C00 517 | 0C00180018001800300030003000600060006000C000C0000E257E9B13>I<07E01C3838 518 | 1C300C700E60066006E007E007E007E007E007E007E007E007E007E00760066006700E30 519 | 0C381C1C3807E010187F9713>I<03000700FF0007000700070007000700070007000700 520 | 0700070007000700070007000700070007000700070007007FF80D187D9713>I<0F8010 521 | 6020304038803CC01CE01C401C003C003800380070006000C00180010002000404080410 522 | 0430083FF87FF8FFF80E187E9713>I<07E01838201C601E700E201E001E001C001C0038 523 | 007007E00038001C000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<30 524 | 183FF03FE03F80200020002000200020002FC03060203000380018001C001C401CE01CE0 525 | 1C80184038403030E00F800E187E9713>53 D<01F807040C06180E300E300070006000E0 526 | 00E3E0E418E80CF00EE006E007E007E007600760077006300E180C0C3807E010187F9713 527 | >I<40007FFF7FFE7FFE4004800880108010002000400040008001800100030003000700 528 | 060006000E000E000E000E000E00040010197E9813>I<07E01818300C20066006600670 529 | 06780C3E181F3007C003E00CF8307C601E600FC007C003C003C00360022004181807E010 530 | 187F9713>I<07E01C303018700C600EE006E006E007E007E0076007700F3017182707C7 531 | 00070006000E000C700C7018603030600F8010187F9713>I<60F0F06000000000000000 532 | 0060F0F06004107D8F0B>I<60F0F060000000000000000060F0F0701010102020404004 533 | 177D8F0B>I<000C0000000C0000000C0000001E0000001E0000002F0000002700000027 534 | 00000043800000438000004380000081C0000081C0000181E0000100E0000100E00003FF 535 | F000020070000200700004003800040038000400380008001C0008001C003C001E00FF00 536 | FFC01A1A7F991D>65 DI<003F0201C0C603002E0E001E1C 539 | 000E1C0006380006780002700002700002F00000F00000F00000F00000F00000F0000070 540 | 00027000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>I< 541 | FFFF80000E00E0000E0070000E0038000E001C000E000E000E000E000E0007000E000700 542 | 0E0007800E0007800E0007800E0007800E0007800E0007800E0007800E0007800E000700 543 | 0E0007000E000F000E000E000E001C000E001C000E0078000E00E000FFFF8000191A7F99 544 | 1D>III<003F020001C0C6 549 | 0003002E000E001E001C000E001C00060038000600780002007000020070000200F00000 550 | 00F0000000F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E 551 | 001C000E001C000E000E000E000300160001C06600003F82001A1A7E991E>III<0FFE007000700070007000700070 557 | 00700070007000700070007000700070007000700070007000704070E070E07040E061C0 558 | 1F000F1A7E9914>I76 DII80 D82 D<0FC21836200E6006C006C002C002C002E00070007E003FE01F 573 | F803FC007E000E00070003800380038003C002C006E004D81887E0101A7E9915>I<7FFF 574 | FF00701C0700401C0100401C0100C01C0180801C0080801C0080801C0080001C0000001C 575 | 0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C 576 | 0000001C0000001C0000001C0000001C0000001C0000001C000003FFE000191A7F991C> 577 | IIII< 587 | FF801FE01E0007001E0006000F00040007000C00078008000380100001C0100001E02000 588 | 00E06000007040000078800000388000001D0000001F0000000E0000000E0000000E0000 589 | 000E0000000E0000000E0000000E0000000E0000000E0000000E000000FFC0001B1A7F99 590 | 1D>89 D<1FC000387000383800101C00001C00001C0003FC001E1C00381C00701C00E01C 591 | 00E01C80E01C80E03C80705F801F8F0011107F8F13>97 D 594 | I<07F81C1C381C70087000E000E000E000E000E000E0007000700438081C1807E00E107F 595 | 8F11>I<003F0000070000070000070000070000070000070000070000070000070003E7 596 | 000C1700180F00300700700700E00700E00700E00700E00700E00700E007006007007007 597 | 00380F001C370007C7E0131A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E0 598 | 00E0006000700438081C1807E00E107F8F11>I<01F007180E381C101C001C001C001C00 599 | 1C001C00FFC01C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80 600 | 0D1A80990C>I<0FCF001871803030007038007038007038007038003030001860002FC0 601 | 006000006000007000003FF0003FFC001FFE00600F00C00300C00300C00300C003006006 602 | 00381C0007E00011187F8F13>II<183C3C180000000000 605 | 00FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I<018003C003C0018000000000 606 | 00000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C0 607 | 01C001C001C001C001C041C0E180E3007E000A2182990C>IIIII<07E01C38300C700E6006E007E007E007E007E007E0076006700E381C1C 616 | 3807E010107F8F13>II114 D<1F2060E04020C020C020F0007F003FC01F 620 | E000F080708030C030C020F0408F800C107F8F0F>I<0800080008000800180018003800 621 | FFC038003800380038003800380038003800382038203820382018201C4007800B177F96 622 | 0F>IIIIIII127 D E /Fp 34 122 df<00600001E0000FE000FFE000F3E00003E0 633 | 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 634 | 0003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>49 635 | D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007 636 | C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFF 637 | C07FFFC0FFFFC0FFFFC0131B7E9A18>I<07F8001FFE003C1F003C0F807C07C07E07C07C 638 | 07C03807C0000F80000F80001E00003C0003F800001E00000F800007C00007C00007E030 639 | 07E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<000180 640 | 000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F800C0F80 641 | 180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F80 642 | 00FFF800FFF8151B7F9A18>I<3801803FFF003FFE003FFC003FF8003FC0003000003000 643 | 0030000030000031F800361E00380F803007800007C00007E00007E00007E07807E0F807 644 | E0F807E0F807C0F007C0600F80381F001FFE0007F000131B7E9A18>I<00038000000380 645 | 000007C0000007C0000007C000000FE000000FE000001FF000001BF000003BF8000031F8 646 | 000031F8000060FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF 647 | 8003001F8007001FC006000FC006000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E 648 | 9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000 649 | 607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC0000 650 | 00FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E 651 | 0000FFFC00001FE0001B1C7D9B22>67 DII73 660 | D77 D<003FE00001F07C0003C01E000F800F801F0007C01F0007C03E0003E07E0003 665 | F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001 666 | F8FC0001F87C0001F07C0001F07E0003F03E0003E03E0703E01F08C7C00F906F8003D03E 667 | 0001F87C00003FF8080000180800001C1800001FF800001FF800000FF000000FF0000007 668 | E0000003C01D247D9B24>81 DI<0FF8001C1E003E0F803E07803E07C01C07C00007 673 | C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F81512 674 | 7F9117>97 DI<03FC000E0E001C1F 677 | 003C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C01 678 | 801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F000 679 | 01F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F8 680 | 01F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C 681 | 1B>I<03FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000 682 | F800007800007800603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7 683 | C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80 684 | 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 685 | 007FF0007FF000121D809C0F>I<03F0F00E1F383C0F3838073078078078078078078078 686 | 07803807003C0F001E1C0033F0003000003000003000003FFF003FFFC01FFFE01FFFF078 687 | 01F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<1E003F003F00 688 | 3F003F001E000000000000000000000000007F007F001F001F001F001F001F001F001F00 689 | 1F001F001F001F001F001F001F00FFC0FFC00A1E7F9D0E>105 D107 DIII<01FC000F07801C01C03C01E07800 699 | F07800F0F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F07 700 | 8001FC0015127F9118>II114 D<1FD830786018E018E018F000FF807FE07FF01FF807 705 | FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F00 706 | 0F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F080798 707 | 03F00E1A7F9913>II119 DII E /Fq 13 116 df46 716 | D<00FC0003FF000787801E01C01C3FC0387FC070E3E071C1E0E1C1E0E380E0E380E0E380 717 | E0E380E0E380E0E1C1C071C1C070E380387F001C3E001E00000781E003FFC000FE001317 718 | 7E9618>64 D<1FC07FE0707040380038003801F81FF87E38F038E038E038F0787FF83FB8 719 | 0D0F7F8E11>97 D<07E01FF8383870007000E000E000E000E000E0007000700838381FF8 720 | 07E00D0F7F8E10>99 D<0F801FE0387070306038E018FFF8FFF8E000E000600070003818 721 | 1FF807E00D0F7F8E10>101 D104 723 | D107 DIII<07C01FF038 728 | 38701C701CE00EE00EE00EE00EE00E701C701C3C781FF007C00F0F7F8E12>I114 730 | D<1F007FC0E0C0E000E000F0007F003F800FC001E080E0C0E0E1C07FC01F000B0F7F8E0E 731 | >I E /Fr 8 116 df<000FE01000381C3000E0027003C00170078000F00F0000701E0000 732 | 701E0000303C0000303C0000107C00001078000010F8000000F8000000F8000000F80000 733 | 00F8000000F8000000F8000000F8000000F8000000780000007C0000103C0000103C0000 734 | 101E0000201E0000200F0000200780004003C0008000E0030000380C00000FF0001C217E 735 | 9F21>67 D75 739 | D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E 740 | 00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97 741 | D<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F000 742 | 00F000007000007000003800803800801C010007060001F80011147F9314>101 743 | D<1C00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C 744 | 001C001C001C001C001C001C001C001C001C001C001C001C001C00FF8009207F9F0C> 745 | 108 D<1C7C00FC86001D03001E03801E03801C03801C03801C03801C03801C03801C0380 746 | 1C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014147E9319>110 747 | D<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000 748 | F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0FC83038 749 | 6018C008C008C008E0007C003FE01FF007F8003C800E8006C006C006C004E00CD81887E0 750 | 0F147F9312>115 D E /Fs 15 122 df<07000F801FC01FC01FC01F400E400040008000 751 | 80008001000100020004000400080010002000400080000A1570B116>39 752 | D<00000000600000000000E00000000000E00000000001E00000000003E00000000003E0 753 | 0000000007E00000000007F0000000000DF0000000000DF00000000019F00000000039F0 754 | 0000000031F00000000061F00000000061F000000000C1F000000000C1F00000000181F0 755 | 0000000381F00000000301F00000000601F00000000601F00000000C01F80000000C00F8 756 | 0000001800F80000003800F80000003000F80000006000F80000006000F8000000C000F8 757 | 000000C000F8000001FFFFF8000001FFFFF80000030000F80000060000F80000060000F8 758 | 00000C0000F800000C0000FC00001800007C00001800007C00003000007C00007000007C 759 | 00006000007C0000C000007C0000C000007C0001C000007C0003C000007C000FE00000FE 760 | 00FFF8001FFFE0FFF8001FFFE02B327CB134>65 D<0000007F8004000003FFF00C00000F 761 | C0381C00003E000C1C0000F80006380001F00003780007C00003F8000F800001F8001F00 762 | 0001F0003E000000F0007C000000F000F8000000F000F8000000E001F0000000E003E000 763 | 0000E007E0000000E007C0000000C00FC0000000C00F80000000C01F80000000001F8000 764 | 0000003F00000000003F00000000003F00000000007E00000000007E00000000007E0000 765 | 0000007E00000000007C0000000000FC0000000000FC0000000000FC0000000000FC0000 766 | 000000FC0000000C00FC0000000C00FC0000000C007C00000018007C00000018007C0000 767 | 0030007C00000030003E00000060003E000000C0001E00000180001F00000380000F8000 768 | 0700000780000C000003C00018000001F00070000000FE03C00000003FFF0000000007F8 769 | 0000002E3376B132>67 D<000FFE0000000FFF000FFE0000001FFF00007E0000001FC000 770 | 006F0000003F8000006F0000003F8000006F0000006F8000006F000000CF800000CF0000 771 | 00DF000000CF0000019F000000CF0000019F000000CF0000031F0000018F0000033E0000 772 | 018F0000063E0000018F00000C3E0000018780000C3E000003078000187C000003078000 773 | 187C000003078000307C000003078000607C00000607800060F8000006078000C0F80000 774 | 06078000C0F800000607800180F800000C07800301F000000C07800301F000000C078006 775 | 01F000000C03C00601F000001803C00C03E000001803C00C03E000001803C01803E00000 776 | 1803C03003E000003003C03007C000003003C06007C000003003C06007C000003003C0C0 777 | 07C000006003C1800F8000006003C1800F8000006001E3000F8000006001E3000F800000 778 | C001E6001F000000C001EC001F000000C001EC001F000000C001F8001F0000018001F800 779 | 3E0000018001F0003E000003C001F0003E00000FE001E0007E0000FFFE01C01FFFF800FF 780 | FC01C01FFFF00040317BB03F>77 D<000FFFFFFC00000FFFFFFF0000007E001FC000007C 781 | 0007E000007C0001F000007C0001F000007C0000F80000F80000F80000F80000F80000F8 782 | 0000F80000F80000F80001F00001F80001F00001F80001F00001F80001F00001F80003E0 783 | 0003F00003E00003F00003E00007E00003E00007C00007C0000F800007C0001F000007C0 784 | 003E000007C0007C00000F8003F000000FFFFF8000000F80000000000F80000000001F00 785 | 000000001F00000000001F00000000001F00000000003E00000000003E00000000003E00 786 | 000000003E00000000007C00000000007C00000000007C00000000007C0000000000F800 787 | 00000000F80000000000F80000000000F80000000001F00000000001F00000000001F000 788 | 00000003F000000000FFFFC0000000FFFF800000002D317BB030>80 789 | D<0007C000001863000070378000E0178001C01F8003801F0007800F000F000F000F000F 790 | 001F001E001E001E003E001E003E001E007C003C007C003C007C003C007C003C00F80078 791 | 00F8007800F8007800F8007810F800F030F000F030F000F0307001F0207003E0607802E0 792 | 603804E0C0180860800C30318007C01E001C1F789E24>97 D<0003F0001C0C00380600F0 793 | 0301E00703C00F07801F07801F0F001E1F00001E00003E00003E00007C00007C00007C00 794 | 007C0000F80000F80000F80000F80000F80000F8000478000678000C7800183800301C00 795 | 601C01C006070003F800181F789E20>99 D<0000007C000007FC00000FFC0000007C0000 796 | 0078000000780000007800000078000000F0000000F0000000F0000000F0000001E00000 797 | 01E0000001E0000001E0000003C0000003C0000003C00007C3C0001867800070378000E0 798 | 178001C01F8003801F0007800F000F000F000F000F001F001E001E001E003E001E003E00 799 | 1E007C003C007C003C007C003C007C003C00F8007800F8007800F8007800F8007810F800 800 | F030F000F030F000F0307001F0207003E0607802E0603804E0C0180860800C30318007C0 801 | 1E001E3278B124>I<0007C000383000F01801C00C03800C07800C0F000C1E000C1E0018 802 | 3E00187C00307C00E07C0780FFFC00F80000F80000F80000F00000F00000F00000F00000 803 | F00000F00008F0000CF000187000307000603800C01803800C0E0003F000161F779E20> 804 | I<07801F800008C060E00018E180700030F300380030F600380060FC00380060F8003C00 805 | 60F8003C0060F0003800C1F0007800C1E000780001E000780001E000780003C000F00003 806 | C000F00003C000F00003C001E000078001E000078001E000078003C000078003C0800F00 807 | 03C1800F000781800F000781800F000781001E000703001E000702001E000706001E0007 808 | 04003C00031800180001F000211F7A9E27>110 D<0003F000000E1C0000380600007007 809 | 0001E0038003C00380038003C0078003C00F0003C01F0003C01E0003C03E0003C03E0003 810 | C07C0007C07C0007C07C0007C07C0007C0F8000F80F8000F80F8000F00F8001F00F8001E 811 | 00F8001E0078003C0078007800780070003800E0001C01C0000C038000060E000001F800 812 | 001A1F789E24>I<07C03F800C60E0E0187180E0107B01F0307E01F0307C01E0607C01C0 813 | 6078000060780000C0F00000C0F0000000F0000000F0000001E0000001E0000001E00000 814 | 01E0000003C0000003C0000003C0000003C0000007800000078000000780000007800000 815 | 0F0000000F0000000F0000000F0000001E0000000C0000001C1F7A9E1E>114 816 | D<000FE000303800E00C01800603800603000E07001E07001E07000C07000007800007E0 817 | 0007FE0003FF8001FFC000FFE0000FF00001F00000F8000078000078700070F80070F800 818 | 70F00060E000E0C000C0400180600300181C0007F000171F7A9E1D>I<01E00038063800 819 | 780C180078181C0078101C0078303C00F0203C00F0603C00F0607800F0C07801E0C07801 820 | E000F001E000F001E000F003C001E003C001E003C001E003C003C0078003C0078003C007 821 | 8003C0078103800F0307800F0307800F0307800F0203801E0603801E0603C02E0C01C046 822 | 0800E18318003E01E0201F7A9E26>117 D<01E00038063800780C180078181C0078101C 823 | 0078303C00F0203C00F0603C00F0607800F0C07801E0C07801E000F001E000F001E000F0 824 | 03C001E003C001E003C001E003C003C0078003C0078003C0078003C0078003800F000780 825 | 0F0007800F0007800F0003801E0003801E0003C03E0001C05E0000E1BC00003E3C000000 826 | 3C0000003C000000780000007800000070003C00F0007C00E0007C01C000780380006003 827 | 800060060000300C00001838000007C000001D2D7A9E22>121 D 828 | E /Ft 13 86 df<00000300000000000300000000000300000000000780000000000780 829 | 000000000FC0000000000FC0000000000FC00000000017E00000000013E00000000013E0 830 | 0000000023F00000000021F00000000021F00000000040F80000000040F80000000040F8 831 | 00000000807C00000000807C00000001007E00000001003E00000001003E00000002003F 832 | 00000002001F00000002001F00000004000F80000004000F80000004000F800000080007 833 | C00000080007C00000180007E000001FFFFFE000001FFFFFE00000200003F00000200001 834 | F00000200001F00000400000F80000400000F80000400000F800008000007C0000800000 835 | 7C00018000007E00010000003E00010000003E00030000003F00030000001F0007000000 836 | 1F001F8000003F80FFE00001FFFCFFE00001FFFC2E327EB132>65 837 | D<00003FE0010001FFF8030007F01E03001F800307003E000087007800004F00F000002F 838 | 01E000001F03C000000F078000000F0F800000070F000000071F000000031E000000033E 839 | 000000033C000000017C000000017C000000017C000000017800000000F800000000F800 840 | 000000F800000000F800000000F800000000F800000000F800000000F800000000F80000 841 | 0000F800000000F80000000078000000007C000000007C000000017C000000013C000000 842 | 013E000000011E000000011F000000020F000000020F80000006078000000403C0000008 843 | 01E000000800F00000100078000020003E0000C0001F8003800007F00F000001FFFC0000 844 | 003FE00028337CB130>67 D69 DI73 D76 D78 D<00003FC000000001C03800000007000E0000001C0003800000380001C00000F000 879 | 00F00001E00000780003C000003C00038000001C00078000001E000F0000000F000F0000 880 | 000F001E00000007801E00000007803C00000003C03C00000003C07C00000003E07C0000 881 | 0003E07800000001E07800000001E0F800000001F0F800000001F0F800000001F0F80000 882 | 0001F0F800000001F0F800000001F0F800000001F0F800000001F0F800000001F0F80000 883 | 0001F0F800000001F07C00000003E07C00000003E07C00000003E07C00000003E03C0000 884 | 0003C03E00000007C01E00000007801E00000007800F0000000F000F0000000F00078000 885 | 001E0003C000003C0003C000003C0001E00000780000F00000F00000380001C000001C00 886 | 0380000007000E00000001E078000000003FC000002C337CB134>II82 D<007F802001FFE02007C078600F001C601E0006E03C0003E0 903 | 380001E0780000E0700000E070000060F0000060F0000060F0000020F0000020F0000020 904 | F8000020F80000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF000 905 | 03FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0 906 | 000000F8000000F88000007880000078800000788000007880000078C0000078C0000070 907 | E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF000 908 | 1D337CB125>I<7FFFFFFFFFE07FFFFFFFFFE07E000F8007E078000F8001E070000F8000 909 | E060000F80006040000F80002040000F800020C0000F800030C0000F80003080000F8000 910 | 1080000F80001080000F80001080000F80001080000F80001080000F80001000000F8000 911 | 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 912 | 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 913 | 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 914 | 0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 915 | 0000000F80000000000F80000000000F80000000000F80000000000F80000000001FC000 916 | 00000FFFFF8000000FFFFF80002C317EB030>II E /Fu 78 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E 926 | 01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E 927 | 01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E 928 | 01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C180030180 929 | 0703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C0 930 | 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 931 | 0E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01 932 | C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 933 | C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<00 934 | 3F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00 935 | E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E0 936 | 1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C 937 | 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80 938 | 211D809C23>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15> 939 | 34 D<00E000000310000006080000060800000E0800000E0800000E0800000E0800000E 940 | 1000000E1000000E2000000740000007403FE007800F8007800600038004000780040009 941 | C0080011C0100030E0100020F0200060702000E0384000E03C8000E01C8000E00F0020E0 942 | 070020700780403009C0401830E1800FC03F001B1F7E9D20>38 D<60F0F8680808081010 943 | 204080050C7C9C0C>I<00800100020006000C000C001800180030003000300060006000 944 | 60006000E000E000E000E000E000E000E000E000E000E000E000E0006000600060006000 945 | 300030003000180018000C000C000600020001000080092A7C9E10>I<80004000200030 946 | 00180018000C000C00060006000600030003000300030003800380038003800380038003 947 | 800380038003800380038003000300030003000600060006000C000C0018001800300020 948 | 0040008000092A7E9E10>I<000600000006000000060000000600000006000000060000 949 | 00060000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE0 950 | 000600000006000000060000000600000006000000060000000600000006000000060000 951 | 000600000006000000060000000600001B1C7E9720>43 D<60F0F0701010101020204080 952 | 040C7C830C>II<60F0F06004047C830C>I<0001000300060006 953 | 0006000C000C000C0018001800180030003000300060006000C000C000C0018001800180 954 | 030003000300060006000C000C000C00180018001800300030003000600060006000C000 955 | C00010297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E0 956 | 07E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15 957 | >I<010007003F00C7000700070007000700070007000700070007000700070007000700 958 | 0700070007000700070007000700070007000700FFF80D1C7C9B15>I<07C01830201C40 959 | 0C400EF00FF80FF807F8077007000F000E000E001C001C00380070006000C00180030006 960 | 010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E 961 | 001C001C00180030006007C00030001C001C000E000F000F700FF80FF80FF80FF00E401C 962 | 201C183007C0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C 963 | 00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFF 964 | C0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF8 965 | 3FF03FC020002000200020002000200023E02C303018301C200E000E000F000F000F600F 966 | F00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C04040C0E181E30 967 | 1E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E0076007600770 968 | 06300E300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF00400200800400 969 | 80040080080000100000100000200000600000400000C00000C00001C000018000018000 970 | 038000038000038000038000078000078000078000078000078000078000030000111D7E 971 | 9B15>I<03E00C301008200C200660066006700670067C0C3E183FB01FE007F007F818FC 972 | 307E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C 973 | 301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C2707C700 974 | 060006000E300C780C78187018203010C00F80101D7E9B15>I<60F0F060000000000000 975 | 0000000060F0F06004127C910C>I<60F0F0600000000000000000000060F0F070101010 976 | 1020204080041A7C910C>I<7FFFFFC0FFFFFFE000000000000000000000000000000000 977 | 00000000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>61 978 | D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001 979 | 00010001000000000000000000000003000780078003000F1D7E9C14>63 980 | D<000600000006000000060000000F0000000F0000000F000000178000001780000037C0 981 | 000023C0000023C0000043E0000041E0000041E0000080F0000080F0000080F000010078 982 | 000100780001FFF80002003C0002003C0002003C0004001E0004001E000C001F000C000F 983 | 001E001F00FF00FFF01C1D7F9C1F>65 DI<001F808000E06180 987 | 01801980070007800E0003801C0003801C00018038000180780000807800008070000080 988 | F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000070000080 989 | 7800008078000080380000801C0001001C0001000E000200070004000180080000E03000 990 | 001FC000191E7E9C1E>I69 993 | DI<001F808000E061800180198007000780 996 | 0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000 997 | F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800078078000780 998 | 380007801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C 999 | 21>III<07FF80007C00003C00003C00003C00003C00003C00003C00003C00003C0000 1005 | 3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00703C00F8 1006 | 3C00F83C00F8380070780040700030E0000F8000111D7F9B15>I76 DII<003F800000E0E000038038 1017 | 0007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001 1018 | E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003 1019 | C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80 1020 | 001B1E7E9C20>II82 D<07E0801C1980300580300380600180E00180E00080E00080E00080F000 1027 | 00F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001 1028 | C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0 1029 | 700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000 1030 | 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 1031 | 000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC00 1032 | 1B1C7F9B1E>II 1039 | II89 D91 1048 | D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038 1051 | 1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 1052 | DI<03F80C0C181E301E700C6000E0 1055 | 00E000E000E000E000E00060007002300218040C1803E00F127F9112>I<001F80000380 1056 | 00038000038000038000038000038000038000038000038000038003F3800E0B80180780 1057 | 300380700380600380E00380E00380E00380E00380E00380E00380600380700380300380 1058 | 1807800E1B8003E3F0141D7F9C17>I<07E00C301818300C700E6006E006FFFEE000E000 1059 | E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E 1060 | 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E 1061 | 000E000E000E007FE00F1D809C0D>I<00038007C4C01C78C0383880301800701C00701C 1062 | 00701C00701C003018003838001C700027C0002000002000003000003FF8001FFF001FFF 1063 | 802003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C00180000000000000000 1067 | 00000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 1068 | 001C001C00FF80091D7F9C0C>I<00C001E001E000C00000000000000000000000000000 1069 | 07E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 1070 | 00E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001 1080 | C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 1081 | 7F9115>II<03E0800E1980180580380780700380700380 1084 | E00380E00380E00380E00380E00380E003807003807003803807801807800E1B8003E380 1085 | 000380000380000380000380000380000380000380001FF0141A7F9116>II<1F9020704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D060 1088 | 8FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C 1089 | 001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIIIII<7FFC70386038407040F040E041C003C003 1100 | 8007000F040E041C043C0C380870087038FFF80E127F9112>I E 1101 | /Fv 1 14 df<000FC000007FF80001F03E0003800700060001800C0000C0180000603000 1102 | 0030300000306000001860000018C000000CC000000CC000000CC000000CC000000CC000 1103 | 000CC000000C60000018600000183000003030000030180000600C0000C0060001800380 1104 | 070001F03E00007FF800000FC0001E1D7E9623>13 D E /Fw 28 1105 | 124 df<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04 1106 | 020108227D980E>40 D<8040203018180C0C0E060606070707070707070707070606060E 1107 | 0C0C18183020408008227E980E>I<60F0F070101020204040040A7D830A>44 1108 | D<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C600C70 1109 | 1C30181C7007C00F157F9412>48 D<06000E00FE000E000E000E000E000E000E000E000E 1110 | 000E000E000E000E000E000E000E000E000E00FFE00B157D9412>I<0FE030306018701C 1111 | 701C001C00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F15 1112 | 7F9412>51 D<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C 1113 | 001C70187018603020E01F800F157F9412>57 D<60F0F06000000000000060F0F060040E 1114 | 7D8D0A>I<00FC100383300E00B01C0070380030300030700010600010E00010E00000E0 1115 | 0000E00000E00000E00000E000106000107000103000203800201C00400E008003830000 1116 | FC0014177E9619>67 D<0FF800E000E000E000E000E000E000E000E000E000E000E000E0 1117 | 00E000E000E000E000E0E0E0E0E0C1C061801F000D177E9612>74 1118 | D80 D85 D<3FC0706070302038003803F81E3830387038E039E039E07970 1123 | FF1F1E100E7F8D12>97 DI<07F01838303870106000E000E000E000E000600070 1126 | 083008183007C00D0E7F8D10>I<003E00000E00000E00000E00000E00000E00000E0000 1127 | 0E00000E0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E0070 1128 | 0E00301E00182E0007CF8011177F9614>I<0FC0186030307038E018FFF8E000E000E000 1129 | 600070083010183007C00D0E7F8D10>I<0F9E18E33060707070707070306018C02F8020 1130 | 0060003FE03FF83FFC600EC006C006C006600C38380FE010157F8D12>103 1131 | D<307878300000000000F8383838383838383838383838FE07177F960A>105 1132 | D109 1134 | DI114 D<1F4060C0C040C040E000FF007F801FC001E0806080 1137 | 60C060E0C09F000B0E7F8D0E>I<080008000800180018003800FFC03800380038003800 1138 | 38003800380038403840384038401C800F000A147F930E>III< 1141 | FE1F380E3C0C1C081C080E100E100720072007E003C003C00180018001000100E200E200 1142 | A400780010147F8D13>121 D123 D E /Fx 1143 | 1 50 df<01800780FF80FF80078007800780078007800780078007800780078007800780 1144 | 078007800780FFF8FFF80D157D9414>49 D E /Fy 25 122 df<3078F06005047D830B> 1145 | 46 D<0C1E1E0C0000000000003078F060070E7D8D0B>58 D<003F0400E0880380580600 1146 | 380C00381C0010380010300010700010600000E00000E00000E00000C00000C00040C000 1147 | 40C00080E00080E0010060020030040018180007E00016177A961A>67 1148 | D<03FFFE00E00E00E00400E00400E00401C00401C00401C08001C08003810003830003FF 1149 | 000383000702000702000702000700000E00000E00000E00000E00001C0000FFC0001717 1150 | 7E9617>70 D<007FC0000E00000E00000E00000E00001C00001C00001C00001C00003800 1151 | 00380000380000380000700000700000700000700060E000F0E000F0E000E1C000438000 1152 | 3E000012177D9613>74 D<03FFE000E03800E01C00E00C00E00C01C01C01C01C01C01C01 1153 | C0380380700380E003FF800380000700000700000700000700000E00000E00000E00000E 1154 | 00001C0000FF800016177E9618>80 D<1FFFFC38381C2038086038084038084070088070 1155 | 0800700000700000E00000E00000E00000E00001C00001C00001C00001C0000380000380 1156 | 000380000380000700007FF00016177A961A>84 D<7FC1FC1C00601C00401C00401C0040 1157 | 380080380080380080380080700100700100700100700100E00200E00200E00200E00200 1158 | E00400E00800E008006030003040001F8000161779961A>I<03900C7018703030306060 1159 | 6060606060C0C0C0C840C841C862D01C700D0E7C8D12>97 D<07C00C6030E020E06000C0 1160 | 00C000C00080008000C020C04061803E000B0E7C8D10>99 D<07801840302060206040FF 1161 | 80C000C000C000C000C020C04061803E000B0E7C8D10>101 D<001C0036003E006C0060 1162 | 0060006000C000C007F800C000C000C00180018001800180018003000300030003000200 1163 | 060006006600E400C80070000F1D81960B>I<01C4063C0C1C181C181830183018301820 1164 | 3020302030307011E00E600060006060C0E0C0C3807E000E147E8D10>I<1F0006000600 1165 | 060006000C000C000C000C0019E01A301C10181030303030303030306060606460C460C8 1166 | C048C0700E177D9612>I<030706000000000000182C4C4C8C1818183032626424380817 1167 | 7D960B>I<3E0C0C0C0C181818183030303060606060C0C8C8C8D06007177D9609>108 1168 | D<30783C00498CC6004E0502004C0602009C0E0600180C0600180C0600180C060030180C 1169 | 0030180C8030181880301818806030090060300E00190E7D8D1D>I<3078498C4E044C04 1170 | 9C0C180C180C180C30183019303130316012601C100E7D8D14>I<078018C03040606060 1171 | 60C060C060C06080C080C08180C10046003C000B0E7B8D12>I<30F04B184E384C309800 1172 | 1800180018003000300030003000600060000D0E7D8D0F>114 D<07800C4018E018E038 1173 | 001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I<060006000C000C000C00 1174 | 0C00FF80180018001800300030003000300060006100610062006400380009147D930C> 1175 | I<38042C0C4C0C4C0C8C18181818181818303030323032307218B40F1C0F0E7D8D13>I< 1176 | 38102C184C184C188C10181018101810302030203040304018800F000D0E7D8D10>I<38 1177 | 042C0C4C0C4C0C8C18181818181818303030303030307018E00F60006000C0E0C0E18043 1178 | 003C000E147D8D11>121 D E end 1179 | %%EndProlog 1180 | %%BeginSetup 1181 | %%Feature: *Resolution 300dpi 1182 | TeXDict begin 1183 | %%PaperSize: a4 1184 | 1185 | %%EndSetup 1186 | %%Page: 1 1 1187 | 1 0 bop 100 178 a Fy(J.)12 b(F)m(unctional)i(Pr)n(o)n(gr)n(amming)j 1188 | Fx(1)12 b Fw(\(1\):)f(1{000,)f(Jan)o(uary)f(1993)983 1189 | 177 y(c)974 178 y Fv(\015)j Fw(1993)e(Cam)o(bridge)f(Univ)o(ersit)o(y)h 1190 | (Press)39 b Fu(1)402 436 y Ft(F)10 b(U)g(N)g(C)g(T)g(I)g(O)g(N)g(A)g(L) 1191 | 28 b(P)10 b(E)g(A)g(R)g(L)g(S)308 551 y Fs(A)25 b(Po)l(or)f(Man)-7 1192 | b('s)25 b(Concurr)l(ency)h(Monad)702 671 y Fr(Ko)q(en)16 1193 | b(Claessen)575 725 y Fy(Chalmers)d(University)h(of)f(T)m(e)n(chnolo)n 1194 | (gy)644 767 y(email:)g Fq(k)o(o)q(en@cs.chalmers.se)p 1195 | 100 864 1495 2 v 755 926 a Fp(Abstract)100 1004 y Fo(Without)18 1196 | b(adding)g(an)o(y)f(primitiv)o(es)h(to)f(the)f(language,)i(w)o(e)e 1197 | (de\014ne)h(a)g(concurrency)g(monad)h(trans-)100 1050 1198 | y(former)e(in)h(Hask)o(ell.)g(This)g(allo)o(ws)h(us)f(to)f(add)h(a)f 1199 | (limited)j(form)d(of)g(concurrency)i(to)e(an)o(y)h(existing)100 1200 | 1095 y(monad.)12 b(The)h(atomic)g(actions)g(of)f(the)h(new)f(monad)h 1201 | (are)g(lifted)g(actions)h(of)e(the)g(underlying)j(monad.)100 1202 | 1141 y(Some)e(extra)h(op)q(erations,)h(suc)o(h)f(as)f 1203 | Fn(fork)5 b Fo(,)13 b(to)g(initiate)i(new)f(pro)q(cesses,)g(are)f(pro)o 1204 | (vided.)i(W)m(e)e(discuss)100 1187 y(the)h(implemen)o(tation,)j(and)e 1205 | (use)f(some)h(examples)g(to)f(illustrate)j(the)d(usefulness)i(of)e 1206 | (this)h(construc-)100 1232 y(tion.)p 100 1309 V 691 1452 1207 | a Fp(1)24 b(In)o(tro)q(duction)100 1533 y Fu(The)14 b(concept)h(of)f(a) 1208 | f Fm(monad)i Fu(\(W)m(adler,)e(1995\))g(is)h(no)o(w)o(ada)o(ys)f(hea)o 1209 | (vily)f(used)j(in)f(mo)q(dern)f(func-)100 1587 y(tional)g(programmi)o 1210 | (ng)e(languages.)j(Monads)g(are)h(used)g(to)g(mo)q(del)d(some)i(form)f 1211 | (of)g(computa-)100 1641 y(tion,)j(suc)o(h)i(as)g(non-determinism)d(or)i 1212 | (a)h(stateful)f(calculation.)f(Not)i(only)e(do)q(es)j(this)e(solv)o(e) 1213 | 100 1695 y(man)o(y)11 b(of)h(the)i(traditional)e(problems)g(in)g 1214 | (functional)h(programmi)o(ng,)d(suc)o(h)j(as)h(I/O)f(and)g(m)o(u-)100 1215 | 1749 y(table)i(state,)h(but)f(it)g(also)g(o\013ers)h(a)f(general)h 1216 | (framew)o(ork)d(that)j(abstracts)g(o)o(v)o(er)g(man)o(y)d(kinds)100 1217 | 1803 y(of)g(computation.)141 1857 y(It)k(is)g(kno)o(wn)g(ho)o(w)f(to)h 1218 | (use)h(monads)d(to)i(mo)q(del)f(concurrency)m(.)i(T)m(o)e(do)h(this,)g 1219 | (one)g(usually)100 1911 y(constructs)22 b(an)f(imp)q(erativ)o(e)e 1220 | (monad,)f(with)i(op)q(erations)h(that)g(resem)o(ble)f(the)i(Unix)e 1221 | Fl(fork)100 1965 y Fu(\(Jones)c(&)g(Hudak,)g(1993\).)e(F)m(or)h 1222 | (reasons)i(of)e(e\016ciency)i(and)e(con)o(trol,)g Fm(Concurr)n(ent)h 1223 | (Haskel)r(l)100 2019 y Fu(\(P)o(eyton)g(Jones)h Fm(et)g(al.)p 1224 | Fu(,)f(1996\))f(ev)o(en)i(pro)o(vides)f(primitiv)o(e)e(op)q(erations,)i 1225 | (whic)o(h)g(are)h(de\014ned)100 2073 y(outside)d(the)g(language.)141 1226 | 2127 y(This)d(pap)q(er)g(presen)o(ts)h(a)f(w)o(a)o(y)f(to)g(mo)q(del)f 1227 | (concurrency)m(,)j(generalising)e(o)o(v)o(er)g(arbitrary)h(mon-)100 1228 | 2181 y(ads.)17 b(The)g(idea)g(is)g(to)g(ha)o(v)o(e)g 1229 | Fm(atomic)g Fu(actions)h(in)e(some)h(monad)e(that)i(can)h(b)q(e)g 1230 | Fm(lifte)n(d)e Fu(in)o(to)g(a)100 2235 y(concurren)o(t)g(setting.)f(W)m 1231 | (e)f(explore)h(this)g(idea)g(within)f(the)h(language;)f(w)o(e)h(will)e 1232 | (not)i(add)f(an)o(y)100 2289 y(primitiv)o(es.)741 2432 1233 | y Fp(2)24 b(Monads)100 2513 y Fu(T)m(o)12 b(express)i(the)f(prop)q 1234 | (erties)h(of)e(monads)g(in)g(Hask)o(ell,)f(w)o(e)i(will)f(use)h(the)g 1235 | (follo)o(wing)d(t)o(yp)q(e)k(class)100 2567 y(de\014nition.)c(The)i 1236 | (bind)g(op)q(erator)g(of)f(the)h(monad)e(is)h(denoted)i(b)o(y)e(\()p 1237 | Fk(?)p Fu(\),)g(and)h(the)g(unit)f(op)q(erator)100 2621 1238 | y(b)o(y)i Fl(return)6 b Fu(.)p eop 1239 | %%Page: 2 2 1240 | 2 1 bop 100 178 a Fu(2)604 b Fm(Ko)n(en)15 b(Claessen)472 1241 | 262 y Fl(class)20 b(Monad)f Fk(m)c Fl(where)517 316 y 1242 | Fu(\()p Fk(?)p Fu(\))111 b(::)26 b Fk(m)15 b(\013)d Fj(!)h 1243 | Fu(\()p Fk(\013)g Fj(!)f Fk(m)i(\014)r Fu(\))g Fj(!)f 1244 | Fk(m)h(\014)517 370 y Fl(return)32 b Fu(::)26 b Fk(\013)13 1245 | b Fj(!)g Fk(m)h(\013)100 494 y Fu(F)m(urthermore,)d(throughout)g(this)h 1246 | (pap)q(er)g(w)o(e)g(will)e(use)i(the)g(so-called)f Fm(do)p 1247 | Fu(-notation)g(as)h(syn)o(tac-)100 548 y(tic)k(sugar)h(for)f(monadic)e 1248 | (expressions.)j(The)g(follo)o(wing)d(example)h(illustrates)h(a)g 1249 | (traditional)100 602 y(monadic)11 b(expression)j(on)f(the)h(left,)f 1250 | (and)g(the)g(same,)f(written)i(in)f(do-notation,)e(on)i(the)h(righ)o 1251 | (t.)358 728 y Fl(expr)453 734 y Fi(1)511 728 y Fk(?)26 1252 | b(\025x:)389 b Fl(do)20 b Fk(x)27 b Fj( )f Fl(expr)1284 1253 | 734 y Fi(1)358 782 y Fl(expr)453 788 y Fi(2)511 782 y 1254 | Fk(?)g(\025)p 584 782 13 2 v 22 w(:)423 b Fu(;)20 b Fl(expr)1165 1255 | 788 y Fi(2)358 836 y Fl(expr)453 842 y Fi(3)511 836 y 1256 | Fk(?)26 b(\025y)q(:)424 b Fu(;)20 b Fk(y)29 b Fj( )d 1257 | Fl(expr)1282 842 y Fi(3)358 890 y Fl(return)20 b(expr)604 1258 | 896 y Fi(4)1039 890 y Fu(;)g Fl(return)f(expr)1317 896 1259 | y Fi(4)141 1014 y Fu(As)c(an)e(example,)g(w)o(e)h(presen)o(t)i(a)d 1260 | (monad)g(with)g(output,)h(called)g(the)g Fm(writer)g(monad)p 1261 | Fu(.)g(This)100 1068 y(monad)g(has)j(an)g(extra)g(op)q(erator)g(called) 1262 | f Fl(write)6 b Fu(.)16 b(It)h(tak)o(es)g(a)g(string)f(as)h(argumen)o 1263 | (t,)e(whic)o(h)100 1122 y(b)q(ecomes)e(output)h(in)f(a)h(side)g 1264 | (e\013ect)h(of)e(the)h(monad.)e(The)i(bind)f(op)q(erator)h(\()p 1265 | Fk(?)p Fu(\))g(of)f(the)h(monad)100 1176 y(has)g(to)f(tak)o(e)h(care)h 1266 | (of)e(com)o(bining)f(the)i(output)g(of)g(t)o(w)o(o)f(computations.)141 1267 | 1232 y(A)h(monad)e(ha)o(ving)h(this)h(op)q(erator)g(is)g(an)g(instance) 1268 | g(of)g(the)g(follo)o(wing)d(class.)506 1358 y Fl(class)20 1269 | b(Monad)g Fk(m)13 b Fj(\))g Fl(Writer)19 b Fk(m)14 b 1270 | Fl(where)551 1412 y(write)33 b Fu(::)26 b Fl(String)32 1271 | b Fj(!)27 b Fk(m)14 b Fu(\(\))100 1536 y(A)j(t)o(ypical)g(implemen)o 1272 | (tati)o(on)e(of)i(suc)o(h)h(a)f(monad)e(is)j(a)f(pair)g(con)o(taining)f 1273 | (the)i(result)h(of)d(the)100 1590 y(computation,)11 b(together)k(with)f 1274 | (the)g(output)g(pro)q(duced)h(during)f(that)g(computation.)392 1275 | 1716 y Fl(type)20 b(W)h Fk(\013)j Fu(=)h(\()p Fk(\013;)20 1276 | b Fl(String)6 b Fu(\))392 1824 y Fl(instance)19 b(Monad)h(W)h(where)437 1277 | 1878 y Fu(\()p Fk(a;)g(s)p Fu(\))14 b Fk(?)g(k)27 b Fu(=)g 1278 | Fl(let)21 b Fu(\()p Fk(b;)f(s)872 1863 y Fh(0)884 1878 1279 | y Fu(\))25 b(=)h Fk(k)15 b(a)f Fl(in)20 b Fu(\()p Fk(b;)g(s)r 1280 | Fu(+)-20 b(+)s Fk(s)1273 1863 y Fh(0)1285 1878 y Fu(\))437 1281 | 1932 y Fl(return)20 b Fk(x)28 b Fu(=)f(\()p Fk(x;)21 1282 | b Fu(\\")o(\))392 2040 y Fl(instance)e(Writer)h(W)g(where)437 1283 | 2094 y(write)g Fk(s)25 b Fu(=)g(\(\(\))p Fk(;)20 b(s)p 1284 | Fu(\))100 2218 y(Note)14 b(ho)o(w)f(the)i(bind)e(op)q(erator)i 1285 | (concatenates)h(the)e(output)g(of)f(the)i(t)o(w)o(o)e(subactions.)141 1286 | 2274 y(Most)g(monads)f(come)f(equipp)q(ed)j(with)e(a)h 1287 | Fm(run)g Fu(function.)f(This)g(function)h(executes)i(a)d(com-)100 1288 | 2328 y(putation,)i(taking)h(the)i(v)n(alues)e(inside)h(one)g(lev)o(el)g 1289 | (do)o(wn)o(w)o(ards.)f(The)h(monad)e Fl(W)23 b Fu(has)16 1290 | b(suc)o(h)g(a)100 2382 y(run)e(function,)f(w)o(e)h(call)f(it)h 1291 | Fl(output)5 b Fu(,)14 b(whic)o(h)g(returns)h(the)f(output)h(of)e(a)g 1292 | (computation)g(in)g Fl(W)7 b Fu(.)538 2509 y Fl(output)152 1293 | b Fu(::)35 b Fl(W)21 b Fk(\013)13 b Fj(!)f Fl(String)538 1294 | 2563 y(output)19 b Fu(\()p Fk(a;)i(s)p Fu(\))27 b(=)g 1295 | Fk(s)p eop 1296 | %%Page: 3 3 1297 | 3 2 bop 689 178 a Fm(F)m(unctional)15 b(p)n(e)n(arls)575 1298 | b Fu(3)580 278 y Fg(2.1)23 b(Monad)15 b(T)l(r)n(ansformers)100 1299 | 360 y Fu(Sometimes,)d(a)j(monad)f(is)h(parametrised)g(o)o(v)o(er)g 1300 | (another)h(monad.)d(This)i(is)g(mostly)f(done)h(to)100 1301 | 413 y(add)i(more)g(functionalit)o(y)g(to)g(an)h(existing)g(monad.)d(In) 1302 | j(this)g(case)h(w)o(e)g(sp)q(eak)f(of)f(a)h Fm(monad)100 1303 | 467 y(tr)n(ansformer)13 b Fu(\(Liang)g Fm(et)i(al.)p 1304 | Fu(,)f(1995\).)f(An)h(example)f(is)h(the)h(exception)g(monad)e 1305 | (transformer;)100 521 y(it)g(adds)h(a)f(w)o(a)o(y)g(to)g(escap)q(e)i(a) 1306 | e(monadic)f(computation)g(with)h(an)g(error)i(message.)e(In)g(general,) 1307 | 100 575 y(op)q(erations)k(that)f(w)o(ork)h(on)f(one)h(sp)q(eci\014c)h 1308 | (monad)d(can)i(b)q(e)h Fm(lifte)n(d)d Fu(in)o(to)h(the)i(new,)e 1309 | (extended)100 629 y(monad.)141 684 y(Again,)d(w)o(e)h(can)g(express)i 1310 | (this)e(b)o(y)f(using)h(a)f(t)o(yp)q(e)i(class.)463 791 1311 | y Fl(class)20 b(MonadTrans)e Fk(\034)h Fl(where)508 845 1312 | y(lift)33 b Fu(::)26 b Fl(Monad)20 b Fk(m)27 b Fj(\))f 1313 | Fk(m)14 b(\013)f Fj(!)g Fu(\()p Fk(\034)18 b(m)p Fu(\))d 1314 | Fk(\013)100 952 y Fu(A)d(t)o(yp)q(e)h(constructor)g Fk(\034)k 1315 | Fu(forms)11 b(a)h(monad)e(transformer)i(if)f(there)j(is)e(an)g(op)q 1316 | (eration)g Fl(lift)18 b Fu(that)100 1006 y(transforms)13 1317 | b(an)o(y)g(action)h(in)f(a)h(monad)e Fk(m)i Fu(in)o(to)f(an)h(action)f 1318 | (in)h(a)f(monad)f Fk(\034)19 b(m)p Fu(.)141 1060 y(In)12 1319 | b(this)h(pap)q(er)f(w)o(e)h(will)e(discuss)i(a)f(monad)e(transformer)i 1320 | (called)g Fl(C)6 b Fu(.)12 b(It)g(has)h(the)f(in)o(teresting)100 1321 | 1114 y(prop)q(ert)o(y)17 b(that)g(an)o(y)f(monadic)f(action)h(that)h 1322 | (is)f(lifted)g(in)o(to)g(the)i(new)f(monad)d(will)i(b)q(e)h(con-)100 1323 | 1168 y(sidered)h(an)e Fm(atomic)h Fu(action)f(in)h(a)f(concurren)o(t)j 1324 | (setting.)e(Also)f(some)g(extra)h(op)q(erations)h(are)100 1325 | 1222 y(pro)o(vided)13 b(for)h(this)g(monad,)d(for)j(example)f 1326 | Fl(fork)6 b Fu(,)13 b(whic)o(h)h(deals)g(with)f(pro)q(cess)j 1327 | (initiation.)690 1367 y Fp(3)23 b(Concurrency)100 1449 1328 | y Fu(Ho)o(w)15 b(are)i(w)o(e)f(going)f(to)h(mo)q(del)f(concurrency?)i 1329 | (Since)g(w)o(e)f(are)h(not)f(allo)o(w)o(ed)e(to)i(add)g(primi-)100 1330 | 1503 y(tiv)o(es)c(to)g(the)h(language,)e(w)o(e)h(are)h(going)e(to)h 1331 | (sim)o(ulate)f(concurren)o(t)j(pro)q(cesses)g(b)o(y)f 1332 | Fm(interle)n(aving)100 1557 y Fu(them.)d(In)o(terlea)o(ving)g(implemen) 1333 | o(ts)f(concurrency)k(b)o(y)e(running)g(the)h(\014rst)g(part)g(of)e(one) 1334 | i(pro)q(cess,)100 1610 y(susp)q(ending)i(it,)f(and)h(then)h(allo)o 1335 | (wing)c(another)k(pro)q(cess)g(to)f(run.)654 1751 y Fg(3.1)24 1336 | b(Continuations)100 1832 y Fu(T)m(o)16 b(susp)q(end)i(a)e(pro)q(cess,)j 1337 | (w)o(e)e(need)g(to)g(grab)g(its)f(future)i(and)e(stic)o(k)h(it)g(a)o(w) 1338 | o(a)o(y)e(for)i(later)g(use.)100 1886 y Fm(Continuations)g 1339 | Fu(are)g(an)g(excellen)o(t)g(w)o(a)o(y)g(of)f(doing)g(this.)g(W)m(e)g 1340 | (can)i(c)o(hange)f(a)f(function)h(in)o(to)100 1940 y 1341 | Fm(c)n(ontinuation)e(p)n(assing)f(style)e Fu(b)o(y)h(adding)f(an)h 1342 | (extra)g(parameter,)f(the)i(con)o(tin)o(uation.)d(Instead)100 1343 | 1994 y(of)17 b(pro)q(ducing)g(the)h(result)h(directly)m(,)e(the)h 1344 | (function)f(will)f(no)o(w)i(apply)e(the)j(con)o(tin)o(uation)d(to)100 1345 | 2048 y(the)i(result.)f(W)m(e)g(can)h(view)f(the)h(con)o(tin)o(uation)e 1346 | (as)h(the)h Fm(futur)n(e)f Fu(of)g(the)h(computation,)d(as)i(it)100 1347 | 2102 y(sp)q(eci\014es)e(what)f(to)g(do)g(with)f(the)i(result)f(of)g 1348 | (the)g(function.)141 2156 y(Giv)o(en)9 b(a)h(computation)e(t)o(yp)q(e)j 1349 | Fl(Action)6 b Fu(,)j(a)h(function)g(that)g(uses)h(a)f(con)o(tin)o 1350 | (uation)f(with)g(result)100 2210 y(t)o(yp)q(e)14 b Fk(\013)g 1351 | Fu(has)g(the)g(follo)o(wing)d(t)o(yp)q(e.)481 2322 y 1352 | Fl(type)20 b(C)g Fk(\013)27 b Fu(=)g(\()p Fk(\013)13 1353 | b Fj(!)f Fl(Action)6 b Fu(\))13 b Fj(!)f Fl(Action)100 1354 | 2433 y Fu(The)19 b(t)o(yp)q(e)h Fl(Action)k Fu(con)o(tains)19 1355 | b(the)h(actual)e(computation.)f(Since,)i(in)g(our)g(case,)g(w)o(e)g(w)o 1356 | (an)o(t)100 2487 y(to)c(parametrise)g(this)g(o)o(v)o(er)g(an)g 1357 | (arbitrary)g(monad,)e(w)o(e)j(w)o(an)o(t)f Fl(Action)20 1358 | b Fu(\(and)c(also)e Fl(C)7 b Fu(\))15 b(to)g(b)q(e)100 1359 | 2541 y(dep)q(enden)o(t)g(on)f(a)g(monad)e Fk(m)p Fu(.)405 1360 | 2653 y Fl(type)20 b(C)h Fk(m)14 b(\013)26 b Fu(=)i(\()p 1361 | Fk(\013)12 b Fj(!)h Fl(Action)19 b Fk(m)p Fu(\))14 b 1362 | Fj(!)f Fl(Action)19 b Fk(m)p eop 1363 | %%Page: 4 4 1364 | 4 3 bop 100 178 a Fu(4)604 b Fm(Ko)n(en)15 b(Claessen)100 1365 | 278 y Fl(C)24 b Fu(is)17 b(the)h(concurrency)i(monad)c(transformer)h(w) 1366 | o(e)h(use)g(in)f(this)h(pap)q(er.)g(That)f(means)g(that)100 1367 | 332 y Fl(C)j Fk(m)14 b Fu(is)g(a)g(monad,)d(for)j(ev)o(ery)h(monad)d 1368 | Fk(m)p Fu(.)447 432 y Fl(instance)19 b(Monad)h Fk(m)13 1369 | b Fj(\))g Fl(Monad)20 b Fu(\()p Fl(C)g Fk(m)p Fu(\))15 1370 | b Fl(where)492 486 y Fk(f)k(?)13 b(k)107 b Fu(=)27 b 1371 | Fk(\025c:)14 b(f)k Fu(\()p Fk(\025a:)c(k)h(a)f(c)p Fu(\))492 1372 | 540 y Fl(return)20 b Fk(x)26 b Fu(=)h Fk(\025c:)14 b(c)g(x)100 1373 | 639 y Fu(Sequencing)20 b(of)e(con)o(tin)o(uations)h(is)g(done)g(b)o(y)g 1374 | (creating)h(a)f(new)g(con)o(tin)o(uation)g(for)f(the)i(left)100 1375 | 693 y(computation)10 b(that)i(con)o(tains)h(the)g(righ)o(t)e 1376 | (computation.)f(The)j(unit)f(op)q(erator)h(just)f(passes)i(its)100 1377 | 747 y(argumen)o(t)e(to)i(the)h(con)o(tin)o(uation.)724 1378 | 881 y Fg(3.2)23 b(A)n(ctions)100 961 y Fu(The)12 b(t)o(yp)q(e)g 1379 | Fl(Action)17 b Fk(m)12 b Fu(sp)q(eci\014es)i(the)e(actual)f(actions)h 1380 | (w)o(e)f(can)h(do)g(in)f(the)h(new)g(monad.)d(What)100 1381 | 1015 y(do)q(es)19 b(this)f(t)o(yp)q(e)h(lo)q(ok)e(lik)o(e?)g(F)m(or)h 1382 | (reasons)h(of)f(simplicit)o(y)m(,)c(\015exibilit)o(y)m(,)i(and)i 1383 | (expressiv)o(eness)100 1069 y(\(Sc)o(holz,)d(1995\),)f(w)o(e)i(implem)o 1384 | (en)o(t)d(it)i(as)h(a)f(datat)o(yp)q(e)h(that)f(describ)q(es)j(the)e 1385 | (di\013eren)o(t)g(actions)100 1123 y(w)o(e)e(pro)o(vide)f(in)h(the)g 1386 | (monad.)141 1177 y(First)c(of)f(all,)f(w)o(e)h(need)i(atoms,)c(whic)o 1387 | (h)j(are)g(computations)e(in)h(the)h(monad)e Fk(m)p Fu(.)h(W)m(e)g(are) 1388 | h(inside)100 1231 y(a)h(con)o(tin)o(uation,)f(so)h(w)o(e)h(w)o(an)o(t)f 1389 | (these)i(atomic)d(computations)g(to)h(return)i(a)e(new)h(action.)f 1390 | (Also,)100 1285 y(w)o(e)j(need)h(a)e(constructor)j(for)d(creating)h 1391 | (new)h(pro)q(cesses.)h(Lastly)m(,)c(w)o(e)i(pro)o(vide)g(a)f 1392 | (constructor)100 1339 y(that)g(do)q(es)g(not)g(ha)o(v)o(e)g(a)g(con)o 1393 | (tin)o(uation;)e(w)o(e)i(will)f(use)i(it)e(to)h(end)h(a)e(pro)q(cess.)j 1394 | (W)m(e)d(also)h(call)f(this)100 1393 y(the)i(empt)o(y)f(pro)q(cess.)512 1395 | 1493 y Fl(data)20 b(Action)f Fk(m)567 1547 y Fu(=)i Fl(Atom)f 1396 | Fu(\()p Fk(m)14 b Fu(\()p Fl(Action)20 b Fk(m)p Fu(\)\))587 1397 | 1601 y Fj(j)h Fl(Fork)f Fu(\()p Fl(Action)f Fk(m)p Fu(\))c(\()p 1398 | Fl(Action)k Fk(m)p Fu(\))587 1655 y Fj(j)i Fl(Stop)100 1399 | 1754 y Fu(T)m(o)12 b(express)j(the)f(connection)g(b)q(et)o(w)o(een)h 1400 | (an)e(expression)i(of)e(t)o(yp)q(e)h Fl(C)20 b Fk(m)13 1401 | b(\013)g Fu(and)h(an)f(expression)100 1808 y(of)e(t)o(yp)q(e)i 1402 | Fl(Action)18 b Fk(m)p Fu(,)12 b(w)o(e)g(de\014ne)h(a)f(function)g 1403 | Fl(action)18 b Fu(that)12 b(transforms)f(one)i(in)o(to)e(the)i(other.) 1404 | 100 1862 y(It)h(\014nishes)g(the)h(computation)d(b)o(y)i(giving)e(it)i 1405 | (the)g Fl(Stop)20 b Fu(con)o(tin)o(uation.)406 1963 y 1406 | Fl(action)82 b Fu(::)35 b Fl(Monad)20 b Fk(m)14 b Fj(\))e 1407 | Fl(C)21 b Fk(m)14 b(\013)f Fj(!)f Fl(Action)20 b Fk(m)406 1408 | 2017 y Fl(action)f Fk(m)27 b Fu(=)g Fk(m)15 b Fu(\()p 1409 | Fk(\025a:)e Fl(Stop)6 b Fu(\))100 2116 y(T)m(o)14 b(mak)o(e)g(the)i 1410 | (constructors)h(of)e(the)h(datat)o(yp)q(e)f Fl(Action)21 1411 | b Fu(easily)15 b(accessible,)h(w)o(e)f(can)h(de\014ne)100 1412 | 2170 y(functions)e(that)g(corresp)q(ond)h(to)f(them.)e(They)j(will)d 1413 | (create)j(an)f(action)g(in)f(the)h(monad)f Fl(C)20 b 1414 | Fk(m)p Fu(.)141 2223 y(The)13 b(\014rst)h(function)e(is)h(the)g 1415 | (function)f Fl(atom)6 b Fu(,)12 b(whic)o(h)h(turns)h(an)e(arbitrary)h 1416 | (computation)d(in)100 2277 y(the)16 b(monad)e Fk(m)i 1417 | Fu(in)o(to)f(an)g(atomic)f(action)i(in)f Fl(C)22 b Fk(m)p 1418 | Fu(.)16 b(It)g(runs)g(the)g(atomic)e(computation)g(and)100 1419 | 2331 y(monadically)c(returns)16 b(a)d(new)i(action,)e(using)g(the)i 1420 | (con)o(tin)o(uation.)1150 2316 y Fh(y)391 2431 y Fl(atom)83 1421 | b Fu(::)35 b Fl(Monad)20 b Fk(m)13 b Fj(\))g Fk(m)h(\013)f 1422 | Fj(!)f Fl(C)21 b Fk(m)14 b(\013)391 2485 y Fl(atom)20 1423 | b Fk(m)27 b Fu(=)g Fk(\025c:)14 b Fl(Atom)20 b Fu(\()p 1424 | Fl(do)g Fk(a)13 b Fj( )g Fk(m)h Fu(;)20 b Fl(return)g 1425 | Fu(\()p Fk(c)14 b(a)p Fu(\)\))112 2599 y Ff(y)141 2615 1426 | y Fo(This)f(is)f(actually)i(the)e(monadic)i(map,)d(but)i(b)q(ecause)g 1427 | Fn(Functor)i Fo(is)d(not)h(a)e(sup)q(erclass)j(of)e Fn(Monad)k 1428 | Fo(in)141 2653 y(Hask)o(ell)f(w)o(e)d(cannot)i(use)f 1429 | Fn(map)6 b Fo(.)p eop 1430 | %%Page: 5 5 1431 | 5 4 bop 689 178 a Fm(F)m(unctional)15 b(p)n(e)n(arls)575 1432 | b Fu(5)100 278 y(In)18 b(addition,)e(w)o(e)j(ha)o(v)o(e)f(a)g(function) 1433 | g(that)g(uses)i(the)e Fl(Stop)25 b Fu(constructor,)19 1434 | b(called)f Fl(stop)6 b Fu(.)18 b(It)100 332 y(discards)c(an)o(y)g(con)o 1435 | (tin)o(uation,)e(th)o(us)i(ending)g(a)g(computation.)580 1436 | 439 y Fl(stop)33 b Fu(::)i Fl(Monad)20 b Fk(m)13 b Fj(\))g 1437 | Fl(C)20 b Fk(m)15 b(\013)580 493 y Fl(stop)33 b Fu(=)27 1438 | b Fk(\025c:)14 b Fl(Stop)100 599 y Fu(T)m(o)19 b(access)j 1439 | Fl(Fork)6 b Fu(,)20 b(w)o(e)h(de\014ne)g(t)o(w)o(o)f(op)q(erations.)g 1440 | (The)g(\014rst,)h(called)f Fl(par)6 b Fu(,)20 b(com)o(bines)f(t)o(w)o 1441 | (o)100 653 y(computations)11 b(in)o(to)h(one)i(b)o(y)e(forking)g(them)g 1442 | (b)q(oth,)h(and)g(passing)g(the)g(con)o(tin)o(uation)f(to)h(b)q(oth)100 1443 | 707 y(parts.)j(The)g(second,)h Fl(fork)6 b Fu(,)15 b(resem)o(bles)h 1444 | (the)h(more)e(traditional)f(imp)q(erativ)o(e)h(fork.)g(It)h(forks)100 1445 | 761 y(its)i(argumen)o(t)f(after)i(turning)g(it)f(in)o(to)f(an)i 1446 | (action,)e(and)i(con)o(tin)o(ues)g(b)o(y)f(passing)g(\(\))h(to)f(the) 1447 | 100 815 y(con)o(tin)o(uation.)335 916 y Fl(par)171 b 1448 | Fu(::)35 b Fl(Monad)20 b Fk(m)13 b Fj(\))g Fl(C)20 b 1449 | Fk(m)15 b(\013)d Fj(!)h Fl(C)20 b Fk(m)15 b(\013)d Fj(!)h 1450 | Fl(C)20 b Fk(m)15 b(\013)335 970 y Fl(par)20 b Fk(m)457 1451 | 976 y Fi(1)490 970 y Fk(m)526 976 y Fi(2)572 970 y Fu(=)27 1452 | b Fk(\025c:)14 b Fl(Fork)20 b Fu(\()p Fk(m)859 976 y 1453 | Fi(1)892 970 y Fk(c)p Fu(\))14 b(\()p Fk(m)992 976 y 1454 | Fi(2)1025 970 y Fk(c)p Fu(\))335 1078 y Fl(fork)149 b 1455 | Fu(::)35 b Fl(Monad)20 b Fk(m)13 b Fj(\))g Fl(C)20 b 1456 | Fk(m)15 b(\013)d Fj(!)h Fl(C)20 b Fk(m)15 b Fu(\(\))335 1457 | 1132 y Fl(fork)20 b Fk(m)93 b Fu(=)27 b Fk(\025c:)14 1458 | b Fl(Fork)20 b Fu(\()p Fl(action)f Fk(m)p Fu(\))c(\()p 1459 | Fk(c)f Fu(\(\)\))100 1240 y(The)i(t)o(yp)q(e)h(constructor)g 1460 | Fl(C)23 b Fu(is)16 b(indeed)h(a)f(monad)e(transformer.)h(Its)h(lifting) 1461 | f(function)g(is)h(the)100 1294 y(function)k Fl(atom)6 1462 | b Fu(;)20 b(ev)o(ery)i(lifted)e(action)g(b)q(ecomes)h(an)f(atomic)f 1463 | (action)i(in)f(the)h(concurren)o(t)100 1348 y(setting.)551 1464 | 1457 y Fl(instance)e(MonadTrans)g(C)h(where)596 1511 1465 | y(lift)33 b Fu(=)27 b Fl(atom)100 1619 y Fu(W)m(e)12 1466 | b(ha)o(v)o(e)h(no)o(w)f(de\014ned)i(w)o(a)o(ys)f(to)g(construct)h 1467 | (actions)f(of)f(t)o(yp)q(e)i Fl(C)19 b Fk(m)14 b(\013)p 1468 | Fu(,)e(but)h(w)o(e)g(still)f(can)h(not)100 1673 y Fm(do)j 1469 | Fu(an)o(ything)f(with)g(them.)g(Ho)o(w)g(do)h(w)o(e)g(mo)q(del)e 1470 | (concurren)o(tly)j(running)e(actions?)h(Ho)o(w)f(do)100 1471 | 1727 y(w)o(e)f(in)o(terpret)h(them?)696 1868 y Fg(3.3)24 1472 | b(Semantics)100 1950 y Fu(A)o(t)17 b(an)o(y)f(momen)o(t,)e(the)j 1473 | (status)h(of)e(the)i(computation)d(is)i(going)e(to)i(b)q(e)h(mo)q 1474 | (delled)d(b)o(y)i(a)f(list)100 2004 y(of)c(\(concurren)o(tly)i 1475 | (running\))e(actions.)h(W)m(e)f(will)f(use)j(a)e(sc)o(heduling)h(tec)o 1476 | (hnique)g(called)g Fm(r)n(ound-)100 2058 y(r)n(obin)i 1477 | Fu(to)h(in)o(terlea)o(v)o(e)g(the)h(pro)q(cesses.)h(The)f(concept)g(is) 1478 | f(easy:)g(if)g(there)h(is)f(an)g(empt)o(y)f(list)h(of)100 1479 | 2112 y(pro)q(cesses,)j(w)o(e)e(are)g(done.)g(Otherwise,)h(w)o(e)f(tak)o 1480 | (e)g(a)g(pro)q(cess,)i(run)e(its)g(\014rst)h(part,)e(tak)o(e)h(the)100 1481 | 2165 y(con)o(tin)o(uation,)d(and)h(put)h(that)g(at)f(the)h(bac)o(k)g 1482 | (of)f(the)h(list.)f(W)m(e)g(k)o(eep)i(doing)d(this)i(recursiv)o(ely)100 1483 | 2219 y(un)o(til)d(the)h(list)g(is)f(empt)o(y)m(.)141 1484 | 2274 y(W)m(e)h(implem)o(en)o(t)e(this)i(idea)f(in)h(the)g(function)g 1485 | Fl(round)6 b Fu(.)368 2383 y Fl(round)33 b Fu(::)26 b 1486 | Fl(Monad)20 b Fk(m)13 b Fj(\))f Fu([)p Fl(Action)20 b 1487 | Fk(m)p Fu(])26 b Fj(!)13 b Fk(m)h Fu(\(\))368 2437 y 1488 | Fl(round)20 b Fu([)7 b(])126 b(=)27 b Fl(return)20 b 1489 | Fu(\(\))368 2491 y Fl(round)g Fu(\()p Fk(a)12 b Fu(:)f 1490 | Fk(as)p Fu(\))27 b(=)g Fl(case)20 b Fk(a)14 b Fl(of)413 1491 | 2545 y(Atom)20 b Fk(a)543 2551 y Fe(m)643 2545 y Fj(!)39 1492 | b Fl(do)21 b Fk(a)811 2530 y Fh(0)835 2545 y Fj( )13 1493 | b Fk(a)912 2551 y Fe(m)957 2545 y Fu(;)20 b Fl(round)g 1494 | Fu(\()p Fk(as)c Fu(+)-20 b(+)17 b([)p Fk(a)1287 2530 1495 | y Fh(0)1298 2545 y Fu(]\))413 2599 y Fl(Fork)j Fk(a)543 1496 | 2605 y Fi(1)575 2599 y Fk(a)597 2605 y Fi(2)643 2599 1497 | y Fj(!)39 b Fl(round)20 b Fu(\()p Fk(as)c Fu(+)-20 b(+)17 1498 | b([)p Fk(a)1022 2605 y Fi(1)1040 2599 y Fk(;)7 b(a)1081 1499 | 2605 y Fi(2)1099 2599 y Fu(]\))413 2653 y Fl(Stop)142 1500 | b Fj(!)39 b Fl(round)20 b Fk(as)p eop 1501 | %%Page: 6 6 1502 | 6 5 bop 100 178 a Fu(6)604 b Fm(Ko)n(en)15 b(Claessen)100 1503 | 278 y Fu(An)e Fl(Atom)20 b Fu(monadically)11 b(executes)16 1504 | b(its)d(argumen)o(t,)f(and)i(puts)g(the)h(resulting)e(pro)q(cess)j(at)d 1505 | (the)100 332 y(bac)o(k)18 b(of)g(the)h(pro)q(cess)h(list.)e 1506 | Fl(Fork)24 b Fu(creates)c(t)o(w)o(o)e(new)h(pro)q(cesses,)i(and)d 1507 | Fl(Stop)25 b Fu(discards)19 b(its)100 386 y(pro)q(cess.)141 1508 | 440 y(As)14 b(for)f(an)o(y)g(monad,)e(w)o(e)i(need)h(a)f(run)h 1509 | (function)f(for)g Fl(C)20 b Fk(m)13 b Fu(as)h(w)o(ell.)e(It)h(just)h 1510 | (transforms)e(its)100 494 y(argumen)o(t)c(in)o(to)h(an)h(action,)f 1511 | (creates)i(a)f(singleton)f(pro)q(cess)j(list,)d(and)g(applies)h(the)g 1512 | (round-robin)100 548 y(function)j(to)h(it.)491 640 y 1513 | Fl(run)83 b Fu(::)35 b Fl(Monad)20 b Fk(m)14 b Fj(\))e 1514 | Fl(C)21 b Fk(m)14 b(\013)f Fj(!)f Fk(m)i Fu(\(\))491 1515 | 694 y Fl(run)20 b Fk(m)27 b Fu(=)g Fl(round)20 b Fu([)p 1516 | Fl(action)f Fk(m)p Fu(])100 793 y(As)d(w)o(e)f(can)h(see,)g(the)h(t)o 1517 | (yp)q(e)f Fk(\013)f Fu(disapp)q(ears)h(in)f(the)h(result)h(t)o(yp)q(e.) 1518 | e(This)h(means)f(that)g(w)o(e)h(lose)100 847 y(the)e(result)h(of)f(the) 1519 | g(original)f(computation.)f(This)i(seems)g(v)o(ery)g(o)q(dd,)g(but)g 1520 | (often)h(\(and)f(in)f(the)100 901 y(cases)j(of)f(the)g(examples)g(in)f 1521 | (this)i(pap)q(er\))g(w)o(e)f(are)h(only)e(in)o(terested)j(in)d(the)i 1522 | Fm(side)g(e\013e)n(cts)g Fu(of)e(a)100 955 y(computation.)c(It)k(is)f 1523 | (p)q(ossible)g(to)g(generalise)g(the)h(t)o(yp)q(e)g(of)e 1524 | Fl(run)7 b Fu(,)12 b(but)h(that)h(go)q(es)f(b)q(ey)o(ond)g(the)100 1525 | 1009 y(scop)q(e)i(of)e(this)h(pap)q(er.)723 1143 y Fp(4)24 1526 | b(Examples)100 1224 y Fu(W)m(e)12 b(will)f(presen)o(t)j(t)o(w)o(o)e 1527 | (examples)f(of)h(monads)f(that)h(can)h(b)q(e)g(lifted)f(in)o(to)f(the)i 1528 | (new)g(concurren)o(t)100 1278 y(w)o(orld.)603 1413 y 1529 | Fg(4.1)24 b(Concurr)n(ent)16 b(Output)100 1493 y Fu(Recall)d(the)i 1530 | (writer)g(monad)e(example)g(from)f(Sect.)j(2.)f(W)m(e)g(can)h(try)f 1531 | (lifting)f(this)h(monad)f(in)o(to)100 1547 y(the)k(concurren)o(t)h(w)o 1532 | (orld.)e(T)m(o)g(do)g(this,)h(w)o(e)g(w)o(an)o(t)f(to)h(sa)o(y)f(that)h 1533 | (ev)o(ery)g(instance)h(of)e(a)g(writer)100 1601 y(monad)c(can)i(b)q(e)g 1534 | (lifted)g(in)o(to)f(a)g(concurren)o(t)j(writer)e(monad.)1059 1535 | 1586 y Fh(z)425 1693 y Fl(instance)19 b(Writer)h Fk(m)13 1536 | b Fj(\))g Fl(Writer)19 b Fu(\()p Fl(C)i Fk(m)p Fu(\))14 1537 | b Fl(where)470 1747 y(write)20 b Fk(s)25 b Fu(=)g Fl(lift)20 1538 | b Fu(\()p Fl(write)g Fk(s)p Fu(\))100 1847 y(The)f(function)f 1539 | Fl(lift)25 b Fu(here)20 b(is)f(the)h Fl(atom)k Fu(of)19 1540 | b(the)g(monad)e(transformer)i Fl(C)6 b Fu(.)19 b(Ev)o(ery)g 1541 | Fl(write)100 1900 y Fu(action,)d(after)h(lifting,)e(b)q(ecomes)i(an)g 1542 | (atomic)e(action.)i(This)g(means)f(that)h(no)g(computation)100 1543 | 1954 y(will)12 b(pro)q(duce)j(output)f(while)g(another)g 1544 | Fl(write)20 b Fu(is)13 b(writing.)141 2008 y(Before)18 1545 | b(w)o(e)f(presen)o(t)i(an)d(example,)g(w)o(e)h(\014rst)h(de\014ne)g(an) 1546 | e(auxilary)g(function)h Fl(loop)6 b Fu(.)16 b(This)100 1547 | 2062 y(function)d(w)o(orks)h(in)f(an)o(y)g(writer)h(monad.)e(It)i(tak)o 1548 | (es)g(one)g(argumen)o(t,)e(a)h(string,)g(and)h(writes)g(it)100 1549 | 2116 y(rep)q(eatedly)h(to)e(the)i(output.)473 2216 y 1550 | Fl(loop)66 b Fu(::)26 b Fl(Writer)20 b Fk(m)13 b Fj(\))g 1551 | Fl(String)18 b Fj(!)13 b Fk(m)h Fu(\(\))473 2270 y Fl(loop)20 1552 | b Fk(s)27 b Fu(=)18 b Fl(do)j(write)e Fk(s)c Fu(;)20 1553 | b Fl(loop)g Fk(s)100 2370 y Fu(W)m(e)13 b(use)i(this)f(function)g(to)g 1554 | (de\014ne)h(a)e(computation)g(in)g Fk(C)k(m)d(\013)g 1555 | Fu(that)g(creates)i(t)o(w)o(o)d(pro)q(cesses)100 2424 1556 | y(that)g(are)h(constan)o(tly)f(writing.)f(One)i(pro)q(cess)h(writes)f 1557 | (the)g(string)f(\\)p Fl(fish)p Fu(")o(,)g(the)g(other)h(writes)100 1558 | 2478 y(\\)p Fl(cat)p Fu(")o(.)112 2599 y Ff(z)141 2615 1559 | y Fo(Actually)m(,)g(w)o(e)f(w)o(an)o(t)f(to)h(sa)o(y)g(this)h(for)f 1560 | (all)h(monad)g(transformers)f(at)g(once,)g(but)h(Hask)o(ell)g(do)q(es)g 1561 | (not)141 2653 y(curren)o(tly)h(allo)o(w)f(us)f(to)g(express)h(this.)p 1562 | eop 1563 | %%Page: 7 7 1564 | 7 6 bop 689 178 a Fm(F)m(unctional)15 b(p)n(e)n(arls)575 1565 | b Fu(7)508 262 y Fl(example)32 b Fu(::)26 b Fl(Writer)20 1566 | b Fk(m)13 b Fj(\))g Fl(C)20 b Fk(m)15 b Fu(\(\))508 316 1567 | y Fl(example)32 b Fu(=)18 b Fl(do)j(write)e Fu(\\)p Fl(start!)p 1568 | Fu(")776 370 y(;)i Fl(fork)f Fu(\()p Fl(loop)g Fu(\\)p 1569 | Fl(fish)p Fu(")n(\))776 424 y(;)h Fl(loop)f Fu(\\)p Fl(cat)p 1570 | Fu(")100 532 y(The)13 b(result)g(of)g(the)g(expression)h 1571 | Fl(output)k Fu(\()p Fl(run)h(example)6 b Fu(\))13 b(lo)q(oks)f(lik)o(e) 1572 | g(the)h(follo)o(wing)d(string.)270 644 y(\\)p Fl(start!fishcatfishc)o 1573 | (atfis)o(hcatf)o(ishc)o(atfis)o(hcatf)o(ishca)18 b(...)p 1574 | Fu(")100 755 y(Because)d(w)o(e)f(de\014ned)h Fl(write)20 1575 | b Fu(as)13 b(an)h(atomic)e(action,)h(the)h(writing)f(of)g(one)h(\\)p 1576 | Fl(fish)p Fu(")e(and)i(one)100 809 y(\\)p Fl(cat)p Fu(")f(cannot)i(in)o 1577 | (terfere.)h(If)f(w)o(e)g(w)o(an)o(t)f(\014ner)i(grained)f(b)q(eha)o 1578 | (viour,)f(w)o(e)h(can)g(split)g(one)g(write)100 862 y(action)f(in)o(to) 1579 | g(sev)o(eral)h(write)g(actions,)f(e.g.)g(the)h(separate)h(c)o 1580 | (haracters)g(of)e(a)h(string.)f(A)g(simple)100 916 y(w)o(a)o(y)f(of)g 1581 | (doing)g(this)h(is)g(to)g(c)o(hange)g(the)g(lifting)e(of)i 1582 | Fl(write)5 b Fu(.)379 1024 y Fl(instance)19 b(Writer)h 1583 | Fk(m)13 b Fj(\))g Fl(Writer)19 b Fu(\()p Fl(C)i Fk(m)p 1584 | Fu(\))14 b Fl(where)424 1078 y(write)20 b Fu([)6 b(])101 1585 | b(=)27 b Fl(return)20 b Fu(\(\))424 1132 y Fl(write)g 1586 | Fu(\()p Fk(c)11 b Fu(:)g Fk(s)p Fu(\))28 b(=)f Fl(do)20 1587 | b(lift)g Fu(\()p Fl(write)g Fu([)p Fk(c)p Fu(]\))13 b(;)20 1588 | b Fl(write)g Fk(s)100 1238 y Fu(The)11 b(lifting)f(is)h(no)o(w)g(done)g 1589 | (c)o(haracter-b)o(y-c)o(haracter.)j(The)d(result)h(of)f(the)h 1590 | (expression)g Fl(output)100 1292 y Fu(\()p Fl(run)20 1591 | b(example)5 b Fu(\))14 b(no)o(w)g(lo)q(oks)f(lik)o(e)g(this.)281 1592 | 1403 y(\\)p Fl(start!fciasthcfai)o(tscha)o(ftics)o(ahtfc)o(iasth)o 1593 | (cfait)o(scha)18 b(...)p Fu(")544 1600 y Fg(4.2)23 b(Mer)n(ging)16 1594 | b(of)g(In\014nite)h(Lists)100 1681 y Fu(A)f(w)o(ell)g(kno)o(wn)h 1595 | (problem,)e(called)h(the)h Fm(mer)n(ging)h(of)f(in\014nite)h(lists)p 1596 | Fu(,)d(is)i(as)f(follo)o(ws.)f(Supp)q(ose)100 1735 y(w)o(e)h(ha)o(v)o 1597 | (e)f(an)h(in\014nite)g(list)f(of)g(in\014nite)h(lists,)f(and)h(w)o(an)o 1598 | (t)f(to)h(collapse)f(this)h(list)g(in)o(to)f(one)h(big)100 1599 | 1789 y(in\014nite)9 b(list.)g(The)i(prop)q(ert)o(y)f(w)o(e)g(w)o(an)o 1600 | (t)g(to)f(hold)h(is)f(that)h(ev)o(ery)h(elemen)o(t)e(in)h(an)o(y)f(of)g 1601 | (the)i(original)100 1843 y(lists)j(is)h(reac)o(hable)h(within)e(a)g 1602 | (\014nite)i(n)o(um)o(b)q(er)e(of)g(steps)i(in)f(the)g(new)h(list.)e 1603 | (This)g(tec)o(hnique)i(is)100 1897 y(for)g(example)e(used)k(to)e(pro)o 1604 | (v)o(e)g(that)g(the)h(set)g Fp(Q)f Fu(of)g(rationals)f(has)i(a)f(coun)o 1605 | (table)g(n)o(um)o(b)q(er)g(of)100 1951 y(elemen)o(ts.)141 1606 | 2005 y(Using)g(the)h(writer)g(monad)d(with)i(the)h(new)g(lifting,)d(w)o 1607 | (e)i(can)h(solv)o(e)f(this)g(problem)f(for)h(an)100 2059 1608 | y(in\014nite)d(list)h(of)f(in\014nite)g(strings.)h(The)g(idea)g(is)g 1609 | (that,)f(for)h(eac)o(h)g(string,)f(w)o(e)h(create)i(a)d(pro)q(cess)100 1610 | 2113 y(that)18 b(writes)i(the)f(string.)f(If)h(w)o(e)g(fork)f(this)g 1611 | (in\014nite)h(n)o(um)o(b)q(er)f(of)g(pro)q(cesses,)j(and)d(run)h(the) 1612 | 100 2167 y(resulting)14 b(computation,)d(the)k(output)f(will)e(b)q(e)j 1613 | (the)f(desired)h(in\014nite)f(string.)141 2222 y(W)m(e)h(will)f(tak)o 1614 | (e)h(a)g(step)i(bac)o(k)e(in)g(order)h(to)f(presen)o(t)i(a)e(piece)h 1615 | (of)f(useful)g(theory)m(.)g(There)i(are)100 2276 y(monads)c(that)h(ha)o 1616 | (v)o(e)h(a)f(so-called)g Fm(monoidal)h Fu(structure)i(on)d(them.)f 1617 | (That)h(means)g(that)h(there)100 2330 y(is)d(an)h(op)q(erator,)g 1618 | (denoted)h(b)o(y)f(\()r(+)-20 b(+)r(\),)13 b(that)g(com)o(bines)f(t)o 1619 | (w)o(o)g(computations)g(of)g(the)h(same)f(t)o(yp)q(e)100 1620 | 2384 y(in)o(to)i(one,)i(and)f(that)h(there)g(is)g(an)f(iden)o(tit)o(y)g 1621 | (elemen)o(t)g(for)g(this)h(op)q(eration,)f(called)g Fl(zero)6 1622 | b Fu(.)15 b(In)100 2438 y(Hask)o(ell,)e(w)o(e)h(can)g(sa)o(y:)484 1623 | 2545 y Fl(class)20 b(Monad)g Fk(m)13 b Fj(\))g Fl(Monoidal)19 1624 | b Fk(m)14 b Fl(where)529 2599 y Fu(\()r(+)-20 b(+)s(\))40 1625 | b(::)26 b Fk(m)15 b(\013)d Fj(!)h Fk(m)h(\013)f Fj(!)f 1626 | Fk(m)j(\013)529 2653 y Fl(zero)33 b Fu(::)26 b Fk(m)15 1627 | b(\013)p eop 1628 | %%Page: 8 8 1629 | 8 7 bop 100 178 a Fu(8)604 b Fm(Ko)n(en)15 b(Claessen)100 1630 | 278 y Fu(The)h(function)g Fl(concat)6 b Fu(,)16 b(with)g(t)o(yp)q(e)g 1631 | Fl(Monoidal)22 b Fk(m)13 b Fj(\))g Fu([)p Fk(m)j(\013)p 1632 | Fu(])c Fj(!)h Fk(\013)p Fu(,)i(uses)j(\()r(+)-20 b(+)r(\))17 1633 | b(and)f Fl(zero)100 332 y Fu(to)d(concatenate)j(a)d(\(p)q(ossibly)h 1634 | (in\014nite\))g(list)f(of)h(suc)o(h)g(computations)f(together.)141 1635 | 386 y(The)i(reason)g(w)o(e)g(are)g(lo)q(oking)d(at)j(this)f(is)g(that)h 1636 | Fl(C)21 b Fk(m)15 b Fu(admits)e(a)h(monoidal)d(structure;)16 1637 | b(the)100 440 y(parallel)d(comp)q(osition)g Fl(par)21 1638 | b Fu(represen)o(ts)d(the)d(\()r(+)-20 b(+)s(\),)15 b(and)f(the)i(pro)q 1639 | (cess)h Fl(stop)j Fu(represen)o(ts)e(its)100 494 y(iden)o(tit)o(y)13 1640 | b(elemen)o(t)g Fl(zero)6 b Fu(.)414 589 y Fl(instance)19 1641 | b(Monad)h Fk(m)14 b Fj(\))e Fl(Monoidal)19 b Fu(\()p 1642 | Fl(C)i Fk(m)p Fu(\))14 b Fl(where)459 643 y Fu(\()r(+)-20 1643 | b(+)s(\))40 b(=)27 b Fl(par)459 697 y(zero)33 b Fu(=)27 1644 | b Fl(stop)100 791 y Fu(This)18 b(means)h(w)o(e)g(can)g(use)h 1645 | Fl(concat)k Fu(to)19 b(transform)f(an)h(in\014nite)g(list)f(of)g(pro)q 1646 | (cesses)k(in)o(to)c(a)100 845 y(pro)q(cess)j(that)f(concurren)o(tly)h 1647 | (runs)g(these)g(computations.)d(T)m(o)h(merge)h(an)f(in\014nite)h(list) 1648 | g(of)100 899 y(in\014nite)c(strings,)i(w)o(e)f(transform)f(ev)o(ery)i 1649 | (string)f(in)o(to)f(a)h(writing)f(pro)q(cess,)i(fork)f(them)f(with)100 1650 | 953 y Fl(concat)5 b Fu(,)14 b(and)f(extract)i(the)g(output.)371 1651 | 1048 y Fl(merge)33 b Fu(::)26 b([)7 b Fl(String)e Fu(])13 1652 | b Fj(!)f Fl(String)371 1102 y(merge)33 b Fu(=)27 b Fl(output)737 1653 | 1092 y Fd(b)777 1102 y Fl(run)876 1092 y Fd(b)916 1102 1654 | y Fl(concat)1080 1092 y Fd(b)1120 1102 y Fl(map)20 b(write)100 1655 | 1196 y Fu(Of)d(course,)h(this)f(function)g(also)f(w)o(orks)h(for)g 1656 | (\014nite)h(lists,)e(and)h(can)h(b)q(e)f(adapted)h(to)f(act)g(on)100 1657 | 1250 y(more)c(general)h(lists)f(than)h(strings.)622 1379 1658 | y Fg(4.3)24 b(Concurr)n(ent)16 b(State)100 1458 y Fu(In)f(Hask)o(ell,)g 1659 | (the)h(so-called)f Fl(IO)22 b Fu(monad)14 b(pro)o(vides)i 1660 | Fm(mutable)g(state)p Fu(.)f(Within)g(the)h(monad)e(w)o(e)100 1661 | 1512 y(can)d(create,)i(access,)f(and)f(up)q(date)i(pieces)f(of)f 1662 | (storage.)g(The)h(t)o(yp)q(e)g(of)f(a)g(storage)h(that)f(con)o(tains) 1663 | 100 1566 y(an)i(ob)r(ject)h(of)e(t)o(yp)q(e)i Fk(\013)f 1664 | Fu(is)g Fl(Var)20 b Fk(\013)p Fu(.)12 b(The)i(functions)f(w)o(e)h(use)g 1665 | (to)f(con)o(trol)g(these)i Fl(Var)6 b Fu(s,)13 b(the)h(non-)100 1666 | 1620 y(prop)q(er)g(morphisms)e(of)h Fl(IO)7 b Fu(,)13 1667 | b(ha)o(v)o(e)h(the)g(follo)o(wing)e(t)o(yp)q(es.)532 1668 | 1715 y Fl(newVar)76 b Fu(::)26 b Fl(IO)21 b Fu(\()p Fl(Var)f 1669 | Fk(\013)p Fu(\))532 1769 y Fl(readVar)54 b Fu(::)26 b 1670 | Fl(Var)20 b Fk(\013)13 b Fj(!)g Fl(IO)20 b Fk(\013)532 1671 | 1823 y Fl(writeVar)32 b Fu(::)26 b Fl(Var)20 b Fk(\013)13 1672 | b Fj(!)g Fk(\013)f Fj(!)h Fl(IO)20 b Fu(\(\))100 1917 1673 | y(In)11 b(the)h(lifted)e(v)o(ersion)h(of)g(this)g(monad,)e(the)j 1674 | Fl(C)17 b(IO)h Fu(monad,)9 b(w)o(e)i(can)h(ha)o(v)o(e)f(sev)o(eral)g 1675 | (concurren)o(t)100 1971 y(pro)q(cesses)21 b(sharing)d(pieces)i(of)e 1676 | (state.)h(In)g(a)f(concurren)o(t)i(w)o(orld)e(ho)o(w)o(ev)o(er,)h(w)o 1677 | (e)g(often)f(w)o(an)o(t)100 2025 y(more)12 b(structure)j(on)e(shared)h 1678 | (state.)f(Concurren)o(t)h(Hask)o(ell)f(\(P)o(eyton)g(Jones)h 1679 | Fm(et)g(al.)p Fu(,)f(1996\),)e(an)100 2079 y(extension)17 1680 | b(of)f(Hask)o(ell)f(with)i(primitiv)o(es)d(for)i(creating)h(concurren)o 1681 | (t)h(pro)q(cesses,)h(recognised)100 2133 y(this.)13 b(It)h(in)o(tro)q 1682 | (duces)h(a)f(new)g(form)e(of)h(shared)i(state:)f(the)h 1683 | Fl(MVar)6 b Fu(.)141 2187 y(Lik)o(e)16 b(a)h Fl(Var)6 1684 | b Fu(,)16 b(an)h Fl(M)o(Var)23 b Fu(can)17 b(con)o(tain)f(a)h(v)n 1685 | (alue,)e(but)i(it)g(ma)o(y)d(also)i(b)q(e)i(empt)o(y)m(.)c(An)j 1686 | Fl(MVar)100 2241 y Fu(b)q(ecomes)e(empt)o(y)e(after)i(a)f(pro)q(cess)j 1687 | (has)e(done)f(a)h(read)g(op)q(eration)f(on)h(it.)f(Pro)q(cesses)j 1688 | (reading)100 2295 y(an)h(empt)o(y)g Fl(M)o(Var)25 b Fu(will)18 1689 | b(blo)q(c)o(k,)g(un)o(til)f(a)i(new)g(v)n(alue)f(is)h(put)g(in)o(to)f 1690 | (the)h Fl(MVar)6 b Fu(.)18 b Fl(MVar)p Fu(s)g(are)h(a)100 1691 | 2349 y(p)q(o)o(w)o(erful)d(mec)o(hanism)f(for)i(creating)g(higher)g 1692 | (lev)o(el)g(concurren)o(t)i(data)d(abstractions.)i(They)100 1693 | 2403 y(can)c(for)f(example)g(b)q(e)h(used)h(for)f(sync)o(hronization)g 1694 | (and)f(data)h(sharing)f(at)h(the)h(same)e(time.)141 2457 1695 | y(It)h(is)g(p)q(ossible)g(to)g(in)o(tegrate)g Fl(M)o(Var)p 1696 | Fu(s)g(with)f(our)h(concurrency)i(monad)c(transformer,)h(using)100 1697 | 2511 y(the)18 b(m)o(utable)e(state)i(primitiv)o(es)e(w)o(e)i(already)f 1698 | (ha)o(v)o(e.)g(First,)g(w)o(e)h(ha)o(v)o(e)f(to)h(think)f(of)g(ho)o(w)g 1699 | (to)100 2565 y(represen)o(t)j(an)d Fl(MVar)6 b Fu(.)18 1700 | b(An)g Fl(M)o(Var)24 b Fu(can)18 b(b)q(e)h(in)e(t)o(w)o(o)g(di\013eren) 1701 | o(t)i(states;)g(it)e(can)h(either)h(b)q(e)f(full)100 1702 | 2619 y(\(con)o(taining)13 b(some)g(v)n(alue\),)f(or)i(empt)o(y)m(.)p 1703 | eop 1704 | %%Page: 9 9 1705 | 9 8 bop 689 178 a Fm(F)m(unctional)15 b(p)n(e)n(arls)575 1706 | b Fu(9)493 262 y Fl(type)20 b(MVar)g Fk(\013)49 b Fu(=)27 1707 | b Fl(Var)20 b Fu(\()p Fl(Maybe)g Fk(\013)p Fu(\))493 1708 | 316 y Fl(data)g(Maybe)g Fk(\013)27 b Fu(=)g Fl(Just)20 1709 | b Fk(\013)25 b Fj(j)g Fl(Nothing)100 413 y Fu(W)m(e)14 1710 | b(use)i(the)g(datat)o(yp)q(e)f Fl(Maybe)21 b Fu(to)15 1711 | b(indicate)g(that)g(there)h(is)f Fl(Just)21 b Fu(a)15 1712 | b(v)n(alue)f(in)h(an)g Fl(M)o(Var)6 b Fu(,)15 b(or)100 1713 | 467 y Fl(Nothing)k Fu(at)14 b(all.)141 521 y(Let)h(us)f(no)o(w)g 1714 | (de\014ne)i(the)e(op)q(erations)h(that)f(w)o(ork)g(on)g 1715 | Fl(MVar)p Fu(s.)f(The)i(function)f(that)g(creates)100 1716 | 575 y(an)f Fl(MVar)20 b Fu(lifts)13 b(the)i(creation)f(of)f(a)h 1717 | Fl(Var)6 b Fu(,)13 b(and)h(puts)h Fl(Nothing)k Fu(in)13 1718 | b(it.)433 674 y Fl(newMVar)32 b Fu(::)26 b Fl(C)20 b(IO)h 1719 | Fu(\()p Fl(M)o(Var)g Fk(\013)p Fu(\))433 728 y Fl(newMVar)32 1720 | b Fu(=)18 b Fl(lift)i Fu(\()14 b Fl(do)20 b Fk(v)15 b 1721 | Fj( )d Fl(newVar)839 781 y Fu(;)20 b Fl(writeVar)f Fk(v)d 1722 | Fl(Nothing)839 835 y Fu(;)k Fl(return)g Fk(v)14 b Fu(\))100 1723 | 939 y(W)m(e)f(can)h(use)h(the)f(same)f(tric)o(k)h(when)h(writing)e(to)h 1724 | (an)f Fl(MVar)6 b Fu(.)1057 924 y Fh(x)386 1036 y Fl(writeMVar)104 1725 | b Fu(::)35 b Fl(M)o(Var)20 b Fk(\013)13 b Fj(!)g Fk(\013)f 1726 | Fj(!)h Fl(C)20 b(IO)h Fu(\(\))386 1090 y Fl(writeMVar)e 1727 | Fk(v)d(a)27 b Fu(=)g Fl(lift)20 b Fu(\()14 b Fl(writeVar)19 1728 | b Fk(v)c Fu(\()p Fl(Just)20 b Fk(a)p Fu(\))14 b(\))100 1729 | 1187 y(The)g(hardest)i(function)e(to)g(de\014ne)h(is)f 1730 | Fl(readMVar)6 b Fu(,)13 b(since)i(it)f(has)h(to)f(deal)g(with)g(blo)q 1731 | (c)o(king.)f(T)m(o)100 1241 y(a)o(v)o(oid)g(in)o(terference)18 1732 | b(when)d(reading)h(an)f Fl(M)o(Var)6 b Fu(,)15 b(w)o(e)h(p)q(erform)e 1733 | (an)h(atomic)e(action)i(that)g(pulls)100 1295 y(the)c(v)n(alue)f(out)h 1734 | (of)f(the)i Fl(Var)17 b Fu(and)11 b(puts)g Fl(Nothing)17 1735 | b Fu(bac)o(k.)10 b(W)m(e)g(in)o(tro)q(duce)i(an)f(auxilary)e(function) 1736 | 100 1349 y Fl(takeVar)c Fu(,)13 b(w)o(orking)g(on)h(the)h(unlifted)e 1737 | Fl(IO)20 b Fu(monad,)12 b(that)i(do)q(es)g(this.)479 1738 | 1447 y Fl(takeVar)68 b Fu(::)35 b Fl(M)o(Var)21 b Fk(\013)12 1739 | b Fj(!)h Fl(IO)20 b Fu(\()p Fl(Maybe)g Fk(\013)p Fu(\))479 1740 | 1501 y Fl(takeVar)f Fk(v)29 b Fu(=)e Fl(do)20 b Fk(a)846 1741 | 1507 y Fe(m)891 1501 y Fj( )12 b Fl(readVar)19 b Fk(v)792 1742 | 1555 y Fu(;)h Fl(writeVar)f Fk(v)d Fl(Nothing)792 1609 1743 | y Fu(;)k Fl(return)g Fk(a)998 1615 y Fe(m)100 1706 y 1744 | Fu(Once)h(w)o(e)f(ha)o(v)o(e)g(this)g(function,)f(the)i(de\014nition)f 1745 | (of)f(a)h(blo)q(c)o(king)f Fl(readMVar)25 b Fu(is)20 1746 | b(not)g(hard)100 1760 y(an)o(ymore.)e(W)m(e)j(represen)o(t)i(blo)q(c)o 1747 | (king)c(b)o(y)i(rep)q(eatedly)h(trying)e(to)h(read)g(the)g(v)n 1748 | (ariable.)e(W)m(e)100 1814 y(realise)d(that)g(this)g(busy-w)o(ait)f 1749 | (implemen)o(tation)e(is)j(v)o(ery)g(ine\016cien)o(t,)g(and)f(w)o(e)i 1750 | (indeed)f(ha)o(v)o(e)100 1868 y(used)f(other)g(metho)q(ds)g(as)f(w)o 1751 | (ell)g(\(suc)o(h)i(as)e(the)h(one)g(used)h(in)e(\(Jones,)h(M.)f 1752 | Fm(et)i(al.)p Fu(,)d(1997\)\),)h(but)100 1922 y(w)o(e)g(presen)o(t)h 1753 | (the)g(easiest)g(implem)o(en)o(tation)c(here.)399 2019 1754 | y Fl(readMVar)67 b Fu(::)35 b Fl(MVar)20 b Fk(\013)13 1755 | b Fj(!)f Fl(C)21 b(IO)f Fk(\013)399 2073 y Fl(readMVar)f 1756 | Fk(v)28 b Fu(=)f Fl(do)21 b Fk(a)788 2079 y Fe(m)832 1757 | 2073 y Fj( )13 b Fl(lift)20 b Fu(\()p Fl(takeVar)f Fk(v)q 1758 | Fu(\))733 2127 y(;)i Fl(case)f Fk(a)896 2133 y Fe(m)941 1759 | 2127 y Fl(of)811 2181 y(Nothing)45 b Fj(!)26 b Fl(readMVar)19 1760 | b Fk(v)811 2235 y Fl(Just)h Fk(a)69 b Fj(!)26 b Fl(return)20 1761 | b Fk(a)100 2332 y Fu(Note)13 b(that)g Fl(readMVar)18 1762 | b Fu(itself)13 b(is)f(not)h(an)g(atomic)e(action,)h(so)h(other)h(pro)q 1763 | (cesses)h(can)e(also)f(read)100 2386 y(the)e Fl(MVar)17 1764 | b Fu(just)10 b(after)g Fl(takeVar)c Fu(.)k(F)m(ortunately)m(,)f(at)h 1765 | (that)g(p)q(oin)o(t,)f(the)i Fl(MVar)16 b Fu(is)10 b(already)g(blo)q(c) 1766 | o(k)o(ed)100 2440 y(b)o(y)15 b(the)h(function)f Fl(takeVar)5 1767 | b Fu(.)15 b(It)g(is)h(imp)q(ossible)d(for)i Fl(readMVar)21 1768 | b Fu(to)15 b(b)q(e)h(atomic,)d(since)j(other)100 2494 1769 | y(pro)q(cesses)g(deserv)o(e)g(a)d(c)o(hance)i(when)g(it)e(is)h(blo)q(c) 1770 | o(king)f(on)g(an)h Fl(MVar)6 b Fu(.)112 2599 y Ff(x)141 1771 | 2615 y Fo(W)m(e)13 b(are)f(a)g(bit)h(slopp)o(y)h(here;)f(the)f(real)h 1772 | (seman)o(tics)h(of)e Fn(M)o(Var)p Fo(s)f(is)i(sligh)o(tly)i(di\013eren) 1773 | o(t)f(\(P)o(eyton)f(Jones)141 2653 y Fc(et)g(al.)p Fo(,)f(1996\).)p 1774 | eop 1775 | %%Page: 10 10 1776 | 10 9 bop 100 178 a Fu(10)593 b Fm(Ko)n(en)15 b(Claessen)141 1777 | 278 y Fu(F)m(or)h(some)f(examples)g(of)g(the)h(use)h(of)e 1778 | Fl(MVar)p Fu(s,)g(w)o(e)h(refer)h(the)f(reader)h(to)f(the)h(pap)q(er)f 1779 | (ab)q(out)100 332 y(Concurren)o(t)f(Hask)o(ell)e(\(P)o(eyton)i(Jones)f 1780 | Fm(et)h(al.)p Fu(,)e(1996\),)g(where)i Fl(M)o(Var)p Fu(s)f(are)g(in)o 1781 | (tro)q(duced.)714 472 y Fp(5)24 b(Discussion)100 553 1782 | y Fu(The)12 b(w)o(ork)f(presen)o(ted)i(in)e(this)h(pap)q(er)g(is)f(an)h 1783 | (excellen)o(t)g(example)e(of)h(the)h(\015exiblit)o(y)f(of)f(monads)100 1784 | 607 y(and)g(monad)f(transformers.)i(The)g(p)q(o)o(w)o(er)g(of)g 1785 | (dealing)f(with)g(di\013eren)o(t)i(t)o(yp)q(es)g(of)e(computations)100 1786 | 661 y(in)g(this)g(w)o(a)o(y)g(is)g(v)o(ery)h(general,)f(and)h(should)f 1787 | (de\014nitely)g(b)q(e)i(more)d(widely)h(used)h(and)g(supp)q(orted)100 1788 | 715 y(b)o(y)f(programmi)o(ng)d(languages.)j(W)m(e)f(really)h(had)g(to)g 1789 | (push)h(the)g(Hask)o(ell)f(t)o(yp)q(e)h(class)f(mec)o(hanism)100 1790 | 769 y(to)i(its)g(limits)d(in)j(order)h(to)f(mak)o(e)e(this)j(w)o(ork.)e 1791 | (A)h(sligh)o(tly)f(extended)i(class)g(mec)o(hanism)d(w)o(ould)100 1792 | 823 y(ha)o(v)o(e)j(b)q(een)i(helpful)f(\(P)o(eyton)g(Jones)h 1793 | Fm(et)g(al.)p Fu(,)d(1997\).)141 877 y(T)m(o)j(sho)o(w)h(that)g(this)g 1794 | (idea)g(is)g(more)f(than)g(just)i(a)e(to)o(y)m(,)g(w)o(e)h(ha)o(v)o(e)g 1795 | (used)h(this)f(same)f(setting)100 931 y(to)f(add)h(concurrency)i(to)e 1796 | (the)h(graphical)e(system)h Fm(TkGofer)f Fu(\(V)m(ullinghs)g 1797 | Fm(et)i(al.)p Fu(,)e(1996\).)g(The)100 985 y(system)d(increased)j(in)d 1798 | (expressiv)o(e)j(p)q(o)o(w)o(er,)e(and)g(its)g(implem)o(en)o(tation)d 1799 | (in)j(simplicit)o(y)m(.)c(It)k(turns)100 1039 y(out)h(to)h(b)q(e)h(a)e 1800 | (v)o(ery)h(useful)g(extension)h(to)f(TkGofer.)141 1093 1801 | y(W)m(e)h(ha)o(v)o(e)f(also)h(exp)q(erimen)o(ted)g(with)g(lifting)e 1802 | (other)i(w)o(ell-kno)o(wn)f(monads)g(in)o(to)g(this)h(con-)100 1803 | 1147 y(curren)o(t)d(setting.)f(Lifted)g(lists,)g(for)g(example,)e(can)j 1804 | (b)q(e)g(used)g(to)f(express)i(the)f(in\014nite)f(merging)100 1805 | 1201 y(problem)g(more)g(concisely)m(.)h(Ho)o(w)o(ev)o(er,)g(a)g 1806 | (problem)f(with)h(the)h(t)o(yp)q(e)g(system)f(forced)h(us)g(to)f(fo)q 1807 | (ol)100 1255 y(it)i(in)f(order)j(to)e(mak)o(e)f(this)h(w)o(ork.)f 1808 | (Exception)i(and)g(en)o(vironmen)o(t)e(monads)g(\(W)m(adler,)g(1995\)) 1809 | 100 1309 y(do)e(ha)o(v)o(e)h(the)g(exp)q(ected)i(b)q(eha)o(viour,)d 1810 | (though)g(w)o(e)h(are)g(not)g(able)f(to)h(lift)e(all)h(of)g(the)h 1811 | (non-prop)q(er)100 1363 y(morphisms)g(of)i(these)i(monads.)c(This)j(is) 1812 | f(b)q(ecause)i(some)e(of)g(them)f(need)j(a)e(computation)f(as)100 1813 | 1417 y(an)g Fm(ar)n(gument)p Fu(,)h(so)g(that)g(lifting)e(b)q(ecomes)i 1814 | (non-trivial.)141 1471 y(Ho)o(w)o(ev)o(er,)f(there)g(are)g(a)f(few)h 1815 | (dra)o(wbac)o(ks.)f(W)m(e)g(ha)o(v)o(e)h(not)f(implemen)o(ted)e 1816 | Fm(r)n(e)n(al)i Fu(concurrency)m(.)100 1525 y(W)m(e)i(simply)f(allo)o 1817 | (w)g(in)o(terlea)o(ving)h(of)g Fm(atomic)h Fu(actions,)g(whose)g 1818 | (atomicit)o(y)d(pla)o(ys)j(a)f(vital)g(role)100 1579 1819 | y(in)g(the)h(system.)g(If)f(one)h(atomic)e(action)i(itself)f(do)q(es)i 1820 | (not)f(terminate,)e(the)j(concurren)o(t)g(com-)100 1633 1821 | y(putation)j(of)h(whic)o(h)g(it)g(is)g(a)g(part)g(of)f(do)q(es)i(not)f 1822 | (terminate)g(either.)h(W)m(e)e(cannot)i(c)o(hange)100 1823 | 1687 y(this,)12 b(b)q(ecause)j(w)o(e)e(cannot)g(step)g(outside)h(the)f 1824 | (language)f(to)h(in)o(terrupt)g(the)h(ev)n(aluation)d(of)h(an)100 1825 | 1741 y(expression.)141 1795 y(The)17 b(source)i(co)q(de)e(of)f(the)i 1826 | (functions)f(and)g(classes)h(men)o(tioned)d(in)i(this)g(pap)q(er)g(is)g 1827 | (publi-)100 1849 y(cally)d(a)o(v)n(ailable)g(at)h Fb 1828 | (http://www.cs.chalmers.se/)p Fj(\030)p Fb(k)o(o)q(en/Co)q(de/p)q(ea)o 1829 | (rl.hs)p Fu(.)i(It)f(also)f(con)o(tains)100 1903 y(another,)e(more)g 1830 | (e\016cien)o(t)i(but)f(sligh)o(tly)e(bigger)i(implemen)o(tatio)o(n)d 1831 | (of)j Fl(M)o(Var)p Fu(s.)649 2043 y Fp(Ac)o(kno)o(wledgemen)o(t)o(s)100 1832 | 2124 y Fu(I)f(w)o(ould)g(lik)o(e)f(to)i(thank)f(Ric)o(hard)g(Bird,)g 1833 | (Byron)h(Co)q(ok,)f(Andrew)h(Moran,)f(Thomas)f(Nordin,)100 1834 | 2178 y(Andrei)h(Sab)q(elfeld,)g(Mark)g(Shields,)f(T)m(on)h(V)m 1835 | (ullinghs,)e(and)i(Arjan)g(v)n(an)g(Yzendo)q(orn)h(for)f(their)100 1836 | 2232 y(useful)k(commen)o(ts)e(on)j(earlier)f(drafts)g(of)g(this)g(pap)q 1837 | (er.)h(Most)g(of)e(the)i(w)o(ork)f(for)g(this)g(pap)q(er)100 1838 | 2286 y(w)o(as)d(done)g(while)g(visiting)f(the)i(Oregon)g(Graduate)f 1839 | (Institute,)h(and)f(an)g(earlier)h(v)o(ersion)f(w)o(as)100 1840 | 2340 y(used)h(as)f(part)h(of)e(m)o(y)g(Master's)i(thesis)g(at)f(the)h 1841 | (Univ)o(ersit)o(y)g(of)e(Utrec)o(h)o(t,)i(under)h(sup)q(ervision)100 1842 | 2394 y(of)d(Erik)h(Meijer.)735 2534 y Fp(References)100 1843 | 2607 y Fo(Jones,)h(M.,)f(&)h(Hudak,)g(P)m(.)g(\(1993\).)24 1844 | b(Implicit)17 b(and)f(Explicit)h(P)o(arallel)h(Programming)f(in)f(Hask) 1845 | o(ell.)141 2653 y(Y)m(ale)d(Univ)o(ersit)o(y)m(.)19 b(T)m(ec)o(h.)12 1846 | b(Rep.)i(Y)m(ALEU/DCS/RR-982.)p eop 1847 | %%Page: 11 11 1848 | 11 10 bop 679 178 a Fm(F)m(unctional)15 b(p)n(e)n(arls)565 1849 | b Fu(11)100 278 y Fo(Jones,)14 b(M.)g Fc(et)h(al.)e Fo(\(1997\).)22 1850 | b(The)15 b(Hugs)f(System.)22 b(Nottingham)16 b(Univ)o(ersit)o(y)h(and)e 1851 | (Y)m(ale)g(Univ)o(ersit)o(y)m(.)141 324 y(Url:)e Fa(http://)6 1852 | b(www.hask)o(ell.o)o(rg)p Fo(.)100 378 y(Liang,)k(Sh.,)f(Hudak,)h(P)m 1853 | (.,)f(&)g(Jones,)h(M.)f(\(1995\).)j(Monad)e(T)m(ransformers)g(and)g(Mo) 1854 | q(dular)i(In)o(terpreters.)141 423 y Fc(Confer)n(enc)n(e)g(R)n(e)n(c)n 1855 | (or)n(d)g(of)h(22nd)f(POPL)j('95)p Fo(.)g(A)o(CM.)100 1856 | 477 y(P)o(eyton)e(Jones,)f(S.,)f(Gordon,)i(A.,)e(&)h(Finne,)h(S.)f 1857 | (\(1996\).)k(Concurren)o(t)d(Hask)o(ell.)18 b Fc(Pr)n(o)n(c)n(e)n(e)n 1858 | (dings)10 b(of)i(the)141 523 y(23r)n(d)h(POPL)h('96)p 1859 | Fo(.)i(A)o(CM.)100 577 y(P)o(eyton)g(Jones,)f(S.,)g(Jones,)g(M.,)f(&)h 1860 | (Meijer,)h(E.)f(\(1997\).)24 b(T)o(yp)q(e)16 b(Classes:)f(An)h 1861 | (Exploration)i(of)d(the)141 623 y(Design)g(Space.)i Fc(Pr)n(o)n(c)n(e)n 1862 | (e)n(dings)11 b(of)i(the)g(Haskel)r(l)e(Workshop)h(of)h(the)g(ICPF)h 1863 | ('97)p Fo(.)i(A)o(CM.)100 677 y(Sc)o(holz,)f(E.)f(\(1995\).)22 1864 | b(A)14 b(Concurrency)h(Monad)h(Based)f(on)g(Constructor)g(Primitiv)o 1865 | (es.)23 b(Univ)o(ersit\177)-19 b(at)141 722 y(Berlin.)100 1866 | 776 y(V)m(ullinghs,)27 b(T.,)d(Sc)o(h)o(ulte,)i(W.,)f(&)g(Sc)o(h)o 1867 | (winn,)h(T.)e(1996)i(\(June\).)53 b Fc(A)o(n)24 b(Intr)n(o)n(duction)d 1868 | (to)j(Tk-)141 822 y(Gofer)p Fo(.)58 b(T)m(ec)o(h.)27 1869 | b(rept.)g(96-03.)g(Univ)o(ersit)o(y)i(of)e(Ulm.)60 b(Url:)27 1870 | b Fa(http://)6 b(www.info)o(rmatik.uni-)141 868 y(ulm.de/)g(pm/)h(ftp/) 1871 | f(tkgofer.html)p Fo(.)100 922 y(W)m(adler,)12 b(Ph.)f(\(1995\).)j 1872 | (Monads)f(for)d(F)m(unctional)k(Programming.)i Fc(A)n(dvanc)n(e)n(d)9 1873 | b(F)m(unctional)g(Pr)n(o)n(gr)n(am-)141 967 y(ming)p 1874 | Fo(.)16 b(Lecture)d(Notes)g(in)h(Computer)g(Science.)k(Springer)d(V)m 1875 | (erlag.)p eop 1876 | %%Trailer 1877 | end 1878 | userdict /end-hook known{end-hook}if 1879 | %%EOF 1880 | -------------------------------------------------------------------------------- /Haskell/Functional Pearls/A type-correct, stack-safe, provably correct expression compiler in Epigram (McKinna, Wright).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/A type-correct, stack-safe, provably correct expression compiler in Epigram (McKinna, Wright).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Alpha-conversion is easy (Altenkirch).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Alpha-conversion is easy (Altenkirch).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Composing Contracts - An Adventure in Financial Engineering (Peyton Jones, Eber, Seward).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Composing Contracts - An Adventure in Financial Engineering (Peyton Jones, Eber, Seward).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Composing Fractals (Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Composing Fractals (Jones).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Deriving Backtracking Monad Transformers (Hinze).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Deriving Backtracking Monad Transformers (Hinze).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Enumerating the Rationals (Gibbons, Lester, Bird).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Enumerating the Rationals (Gibbons, Lester, Bird).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Haskell does it with class - Functorial unparsing (Hinze).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Haskell does it with class - Functorial unparsing (Hinze).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Implicit Configurations (Kiselyov, Shan).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Implicit Configurations (Kiselyov, Shan).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Linear, bounded, functional pretty-printing (Swierstra, Chitil).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Linear, bounded, functional pretty-printing (Swierstra, Chitil).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Monadic Parsing in Haskell (Hutton, Meijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Monadic Parsing in Haskell (Hutton, Meijer).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Monads for Incremental Computing (Carlsson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Monads for Incremental Computing (Carlsson).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Packrat Parsing - Simple, Powerful, Lazy, Linear Time (Ford).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Packrat Parsing - Simple, Powerful, Lazy, Linear Time (Ford).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Parsing Permutation Phrases (Baars, Loeh, Swierstra).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Parsing Permutation Phrases (Baars, Loeh, Swierstra).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Pickler Combinators (Kennedy).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Pickler Combinators (Kennedy).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Polytypic Unification (Jansson, Jeuring).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Polytypic Unification (Jansson, Jeuring).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Strachey's functional pearl, forty years on (Spivey).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Strachey's functional pearl, forty years on (Spivey).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/Strong Types for Relational Data Stored in Databases or Spreadsheets (Martins da Silva).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/Strong Types for Relational Data Stored in Databases or Spreadsheets (Martins da Silva).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/The Arrow Calculus (Lindley, Wadler, Yallop).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/The Arrow Calculus (Lindley, Wadler, Yallop).pdf -------------------------------------------------------------------------------- /Haskell/Functional Pearls/The countdown problem (Hutton).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Pearls/The countdown problem (Hutton).pdf -------------------------------------------------------------------------------- /Haskell/Functional Programming with Overloading and Higher-Order Polymorphism (Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Programming with Overloading and Higher-Order Polymorphism (Jones).pdf -------------------------------------------------------------------------------- /Haskell/Functional Reactive Animation (Elliott, Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Reactive Animation (Elliott, Hudak).pdf -------------------------------------------------------------------------------- /Haskell/Functional Reactive Programming from First Principles (Wan, Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional Reactive Programming from First Principles (Wan, Hudak).pdf -------------------------------------------------------------------------------- /Haskell/Functional images (Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Functional images (Elliott).pdf -------------------------------------------------------------------------------- /Haskell/Generalising Monads to Arrows (Hughes).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Generalising Monads to Arrows (Hughes).pdf -------------------------------------------------------------------------------- /Haskell/Generic Views on Data Types (Holdermans, Jeuring, Loeh, Rodriguez).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Generic Views on Data Types (Holdermans, Jeuring, Loeh, Rodriguez).pdf -------------------------------------------------------------------------------- /Haskell/Genuinely Functional User Interfaces (Courtney, Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Genuinely Functional User Interfaces (Courtney, Elliott).pdf -------------------------------------------------------------------------------- /Haskell/H-Direct - A Binary Foreign Language Interface for Haskell (Finne, Leijen, Meijer, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/H-Direct - A Binary Foreign Language Interface for Haskell (Finne, Leijen, Meijer, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Haskell 98 Language and Libraries - The Revised Report (Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Haskell 98 Language and Libraries - The Revised Report (Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Haskell and XML - Generic Combinators or Type-Based Translation (Wallace, Runciman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Haskell and XML - Generic Combinators or Type-Based Translation (Wallace, Runciman).pdf -------------------------------------------------------------------------------- /Haskell/Haskell's overlooked object system (Kiselyov, Laemmel).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Haskell's overlooked object system (Kiselyov, Laemmel).pdf -------------------------------------------------------------------------------- /Haskell/High Level Specification of I-O in Functional Languages (Achten, van Groningen, Plasmeijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/High Level Specification of I-O in Functional Languages (Achten, van Groningen, Plasmeijer).pdf -------------------------------------------------------------------------------- /Haskell/History of Lambda-calculus and Combinatory Logic (Cardone, Hindley).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/History of Lambda-calculus and Combinatory Logic (Cardone, Hindley).pdf -------------------------------------------------------------------------------- /Haskell/Implementing Type Classes (Peterson, Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Implementing Type Classes (Peterson, Jones).pdf -------------------------------------------------------------------------------- /Haskell/Iteratee IO - safe, practical, declarative input processing (slides) (Kiselyov).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Iteratee IO - safe, practical, declarative input processing (slides) (Kiselyov).pdf -------------------------------------------------------------------------------- /Haskell/Journal of Functional Programming/Commercial uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Journal of Functional Programming/Commercial uses - Going functional on exotic trades (Frankau, Spinellis, Nassuphis, Burgard).pdf -------------------------------------------------------------------------------- /Haskell/Journal of Functional Programming/Control effects as a modality (Thielecke).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Journal of Functional Programming/Control effects as a modality (Thielecke).pdf -------------------------------------------------------------------------------- /Haskell/Journal of Functional Programming/From natural semantics to C - A formal derivation of two STG machines (de la Encina, Pena).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Journal of Functional Programming/From natural semantics to C - A formal derivation of two STG machines (de la Encina, Pena).pdf -------------------------------------------------------------------------------- /Haskell/Journal of Functional Programming/The Genuine Sieve of Eratosthenes (O'Neill).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Journal of Functional Programming/The Genuine Sieve of Eratosthenes (O'Neill).pdf -------------------------------------------------------------------------------- /Haskell/Journal of Functional Programming/Type-safe higher-order channels with channel locality (Park, Im).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Journal of Functional Programming/Type-safe higher-order channels with channel locality (Park, Im).pdf -------------------------------------------------------------------------------- /Haskell/Lambda Calculus and Combinatory Logic (Rosu).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Lambda Calculus and Combinatory Logic (Rosu).pdf -------------------------------------------------------------------------------- /Haskell/Layered Combinator Parsers with a Unique State (draft, Koopman, Plasmeijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Layered Combinator Parsers with a Unique State (draft, Koopman, Plasmeijer).pdf -------------------------------------------------------------------------------- /Haskell/Lazy Lexing Is Fast (Chakravarty).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Lazy Lexing Is Fast (Chakravarty).pdf -------------------------------------------------------------------------------- /Haskell/Modular Domain Specific Languages and Tools (Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Modular Domain Specific Languages and Tools (Hudak).pdf -------------------------------------------------------------------------------- /Haskell/Modular Monadic Semantics (Liang, Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Modular Monadic Semantics (Liang, Hudak).pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue01.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue01.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue06.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue06.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue07.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue07.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue08.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue08.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue09.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue09.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue10.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue11.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue11.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue12.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue13.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue14.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue14.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue15.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue15.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue16.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue16.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue17.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue17.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue18.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue18.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue19.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue19.pdf -------------------------------------------------------------------------------- /Haskell/Monad.Reader/TMR-Issue20.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monad.Reader/TMR-Issue20.pdf -------------------------------------------------------------------------------- /Haskell/Monadic Constraint Programming (Schrijvers, Stuckey, Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monadic Constraint Programming (Schrijvers, Stuckey, Wadler).pdf -------------------------------------------------------------------------------- /Haskell/Monadic Parser Combinators (Hutton, Meijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Monadic Parser Combinators (Hutton, Meijer).pdf -------------------------------------------------------------------------------- /Haskell/Multi-paradigm Declarative Languages (Hanus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Multi-paradigm Declarative Languages (Hanus).pdf -------------------------------------------------------------------------------- /Haskell/Multi-stage programming with functors and monads (Carette, Kiselyov).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Multi-stage programming with functors and monads (Carette, Kiselyov).pdf -------------------------------------------------------------------------------- /Haskell/Observable Sharing for Functional Circuit Description (Claessen, Sands).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Observable Sharing for Functional Circuit Description (Claessen, Sands).pdf -------------------------------------------------------------------------------- /Haskell/Optimal Purely Functional Priority Queues (Brodal, Okasaki).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Optimal Purely Functional Priority Queues (Brodal, Okasaki).pdf -------------------------------------------------------------------------------- /Haskell/Parsec - Direct Style Monadic Parser Combinators For The Real World (Leijen, Meijer).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Parsec - Direct Style Monadic Parser Combinators For The Real World (Leijen, Meijer).pdf -------------------------------------------------------------------------------- /Haskell/Parsec Documentation (Leijen).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Parsec Documentation (Leijen).pdf -------------------------------------------------------------------------------- /Haskell/Physics, Topology, Logic and Computation - A Rosetta Stone (Baez, Stay).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Physics, Topology, Logic and Computation - A Rosetta Stone (Baez, Stay).pdf -------------------------------------------------------------------------------- /Haskell/Plugging a Space Leak with an Arrow (Liu, Hudak).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Plugging a Space Leak with an Arrow (Liu, Hudak).pdf -------------------------------------------------------------------------------- /Haskell/Polytypic Programming in Haskell (Norell, Jansson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Polytypic Programming in Haskell (Norell, Jansson).pdf -------------------------------------------------------------------------------- /Haskell/Porting the Clean Object I-O library to Haskell (Achten, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Porting the Clean Object I-O library to Haskell (Achten, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Purely Functional Data Structures (Okasaki).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Purely Functional Data Structures (Okasaki).pdf -------------------------------------------------------------------------------- /Haskell/Purely Functional Lazy Non-deterministic Programming (Fischer, Kiselyov, Shan).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Purely Functional Lazy Non-deterministic Programming (Fischer, Kiselyov, Shan).pdf -------------------------------------------------------------------------------- /Haskell/Push-Pull Functional Reactive Programming (Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Push-Pull Functional Reactive Programming (Elliott).pdf -------------------------------------------------------------------------------- /Haskell/Realization of Natural-Language Interfaces Using Lazy Functional Programming (Frost).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Realization of Natural-Language Interfaces Using Lazy Functional Programming (Frost).pdf -------------------------------------------------------------------------------- /Haskell/Removing Left Recursion from Context-Free Grammars (Moore).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Removing Left Recursion from Context-Free Grammars (Moore).pdf -------------------------------------------------------------------------------- /Haskell/Report on Curry (Hanus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Report on Curry (Hanus).pdf -------------------------------------------------------------------------------- /Haskell/Scientific Computation and Functional Programming (Karczmarczuk).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scientific Computation and Functional Programming (Karczmarczuk).pdf -------------------------------------------------------------------------------- /Haskell/Scrap More Boilerplate - Reflection, Zips, and Generalised Casts (Laemmel, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap More Boilerplate - Reflection, Zips, and Generalised Casts (Laemmel, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Scrap Your Boilerplate - A Practical Design Pattern for Generic Programming (Laemmel, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap Your Boilerplate - A Practical Design Pattern for Generic Programming (Laemmel, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Scrap Your Boilerplate - Reloaded (Hinze, Loeh, Oliveira).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap Your Boilerplate - Reloaded (Hinze, Loeh, Oliveira).pdf -------------------------------------------------------------------------------- /Haskell/Scrap Your Boilerplate - Revolutions (Hinze, Loeh).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap Your Boilerplate - Revolutions (Hinze, Loeh).pdf -------------------------------------------------------------------------------- /Haskell/Scrap Your Boilerplate with Class - Extensible Generic Functions (Laemmel, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap Your Boilerplate with Class - Extensible Generic Functions (Laemmel, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Scrap your Boilerplate with XPath-like Combinators (Laemmel).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Scrap your Boilerplate with XPath-like Combinators (Laemmel).pdf -------------------------------------------------------------------------------- /Haskell/Simple Unification-based Type Inference for GADTs (Peyton Jones, Vytiniotis, Weirich, Washburn).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Simple Unification-based Type Inference for GADTs (Peyton Jones, Vytiniotis, Weirich, Washburn).pdf -------------------------------------------------------------------------------- /Haskell/Simplifying and Improving Qualified Types (Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Simplifying and Improving Qualified Types (Jones).pdf -------------------------------------------------------------------------------- /Haskell/Simply efficient functional reactivity (Elliott).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Simply efficient functional reactivity (Elliott).pdf -------------------------------------------------------------------------------- /Haskell/State in Haskell (Launchbury, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/State in Haskell (Launchbury, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Stream Fusion - From Lists to Streams to Nothing at All (Coutts, Leshchinskiy, Stewart).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Stream Fusion - From Lists to Streams to Nothing at All (Coutts, Leshchinskiy, Stewart).pdf -------------------------------------------------------------------------------- /Haskell/Tackling the Awkward Squad (Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Tackling the Awkward Squad (Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Template Meta-programming for Haskell (Sheard, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Template Meta-programming for Haskell (Sheard, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/That About Wraps it Up - Using FIX to Handle Errors Without Exceptions (McAdam).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/That About Wraps it Up - Using FIX to Handle Errors Without Exceptions (McAdam).pdf -------------------------------------------------------------------------------- /Haskell/The C-- Language Specification (Ramsey, Peyton Jones, Lindig).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/The C-- Language Specification (Ramsey, Peyton Jones, Lindig).pdf -------------------------------------------------------------------------------- /Haskell/The Design of a Pretty-printing Library (Hughes).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/The Design of a Pretty-printing Library (Hughes).pdf -------------------------------------------------------------------------------- /Haskell/The Essence of Form Abstraction (Cooper, Lindley, Wadler, Yallop).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/The Essence of Form Abstraction (Cooper, Lindley, Wadler, Yallop).pdf -------------------------------------------------------------------------------- /Haskell/The Haskell Programmer's Guide to the IO Monad - Don't Panic (Klinger).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/The Haskell Programmer's Guide to the IO Monad - Don't Panic (Klinger).pdf -------------------------------------------------------------------------------- /Haskell/The Integration of Functions into Logic Programming (older) (Hanus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/The Integration of Functions into Logic Programming (older) (Hanus).pdf -------------------------------------------------------------------------------- /Haskell/Theorems for free (Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Theorems for free (Wadler).pdf -------------------------------------------------------------------------------- /Haskell/Time and Space Profiling For Non-strict, Higher-order Functional Langugages (Sansom, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Time and Space Profiling For Non-strict, Higher-order Functional Langugages (Sansom, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Tracing Lazy Functional Computations Using Redex Trails (Sparud, Runciman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Tracing Lazy Functional Computations Using Redex Trails (Sparud, Runciman).pdf -------------------------------------------------------------------------------- /Haskell/Tutorial on Curry (Antoy, Hanus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Tutorial on Curry (Antoy, Hanus).pdf -------------------------------------------------------------------------------- /Haskell/Type Classes in Haskell (Hall, Hammond, Peyton Jones, Wadler).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Type Classes in Haskell (Hall, Hammond, Peyton Jones, Wadler).pdf -------------------------------------------------------------------------------- /Haskell/Type Classes with Functional Dependencies (Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Type Classes with Functional Dependencies (Jones).pdf -------------------------------------------------------------------------------- /Haskell/Type Theory and Functional Programming (Thompson).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Type Theory and Functional Programming (Thompson).pdf -------------------------------------------------------------------------------- /Haskell/Type-Oriented Construction of Web User Interfaces (Hanus).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Type-Oriented Construction of Web User Interfaces (Hanus).pdf -------------------------------------------------------------------------------- /Haskell/Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf -------------------------------------------------------------------------------- /Haskell/Types Are Calling Conventions (Bolingbroke, Peyton Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Types Are Calling Conventions (Bolingbroke, Peyton Jones).pdf -------------------------------------------------------------------------------- /Haskell/Typing Haskell in Haskell (Jones).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Typing Haskell in Haskell (Jones).pdf -------------------------------------------------------------------------------- /Haskell/Uniform Boilerplate and List Processing (Mitchell, Runciman).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Uniform Boilerplate and List Processing (Mitchell, Runciman).pdf -------------------------------------------------------------------------------- /Haskell/WASH-CGI - Server-side Web Scripting with Sessions and Typed, Compositional Forms (Thiemann).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/WASH-CGI - Server-side Web Scripting with Sessions and Typed, Compositional Forms (Thiemann).pdf -------------------------------------------------------------------------------- /Haskell/Why Functional Programming Matters (Hughes).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Why Functional Programming Matters (Hughes).pdf -------------------------------------------------------------------------------- /Haskell/Wobbly Types - Type Inference for Generalised Algebraic Data Types (Peyton Jones, Washburn, Weirich).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Wobbly Types - Type Inference for Generalised Algebraic Data Types (Peyton Jones, Washburn, Weirich).pdf -------------------------------------------------------------------------------- /Haskell/Write Yourself a Scheme in 48 Hours (Tang et al.).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Haskell/Write Yourself a Scheme in 48 Hours (Tang et al.).pdf -------------------------------------------------------------------------------- /Prolog/Embedding Prolog in Haskell (Seres, Spivey).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Prolog/Embedding Prolog in Haskell (Seres, Spivey).pdf -------------------------------------------------------------------------------- /Prolog/Scrap Your Boilerplate - Prologically! (Laemmel).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Prolog/Scrap Your Boilerplate - Prologically! (Laemmel).pdf -------------------------------------------------------------------------------- /Prolog/Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aistrate/Articles/97b279b42f4e93cc60cf0d69749b28a8f5f4324a/Prolog/Typed Logical Variables in Haskell (Claessen, Ljunglof).pdf --------------------------------------------------------------------------------