Functional Programming


These lectures providesan introduction to Functional Programming, including both the functional programming language Miranda and functional language implementation techniques such as graph reduction and garbage collection.  The lectures are suitable for undergraduates and generalist MSc students. No prior experience of functional programming in Miranda is assumed. Students must also have prior programming experience in a general purpose programming language.    Note - these lectures do NOT cover use of the Haskell language.

Student Objectives

Understand the basics of the lambda calculus and combinators and how they are used in programming and in the implementation of functional languages. Understand the main features of a lazy functional language. Understand type checking, type-inference and the operation of the Hindley-Milner type system as implemented in Miranda. Write, understand and analyse non-trivial functional programs in Miranda. Understand the computation and memory management issues affecting the sequential implementation of lazy functional languages. Be able to solve problems relating to all of the above, under pressure.

Sections and Lectures

The lectures comprise two unequal sections:

  • SECTION 1: Lambda Calculus, Combinators and Functional Programming
  • SECTION 2: Language Implementation, including garbage collection, graph reduction and memory management

The PDFs are password protected - passwords are provided to my students and occasionally to others on request.  Each Lecture is normally presented live (online or in person).

Section 1: Lambda Calculus, Combinators and Functional Programming

Section 2: Language Implementation

Financial Market Modelling and Analysis


These lectures provide (i) an overview of practical terminology and concepts relating to the global financial markets, and (ii) a gentle introduction to the field of modelling and analysing financial markets with an emphasis on (a) deterministic and discrete-time methods; and (b) numerical simulation, including agent-based modeling.


To provide important practical background to the operation of financial markets.  To distinguish between different types of modeling and analysis, and to explain the advantages and disadvantages of each method;  to gain an understanding of numerical simulation methods.

Sections and Lectures

The lectures comprise four sections.  Each section contains an overview of content and a number of lectures (each lecture is available as either a PDF without audio or as a Powerpoint show with audio).  The PDFs and Powerpoint shows are password protected - passwords are provided to my students and occasionally to others on request.

Section 1: Introduction to financial markets

This first section is primarily knowledge-based. The material was developed in collaboration with an investment bank and is intended to provide the practical basic knowledge that a student should have if they are interested in a career in investment banking. The following topics will be covered:

  1. Market Participants. Financing - the basics (types of participants, examples of each type, examples of key Exchanges). Fund Management - Hedge Funds, Funds of Funds, Private Equity Companies. Key Infrastructure Participants (SWIFT, Euroclear, CLS).     FMMA-Lecture1.pdf
  2. Financial Instruments. Equities, Debt, Derivatives. Options and Option Pricing. Exotic Options. Credit Derivatives. Equity Swaps. Sale and repurchase ("Repo"). Commodities - physical, weather, environmental. FMMA-Lecture2.pdf
  3. Institutional Trading Strategies. What is a trading strategy? Terminology. Who trades? what is traded? whose money is it? Matching investors to trading strategies. Overview of main institutional trading strategies (long only, active vs. passive, long-short, alternative investments). Performance measurement of traditional fund strategies. Performance measurement of hedge fund strategies.  FMMA-Lecture3.pdf FMMA-Lecture4.pdf
  4. Risk Management. Factors affecting risk exposure. Market risk. Liquidity risk. Operational risk. Credit risk. Use of swaps. Value At Risk.  FMMA-Lecture5.pdf
  5. Post-trade Processing (equities). The investment cycle. Pre settlement (verification, agreement, confirmation, comparison, matching, reporting). Settlement (types, CSD, ICSD, settlement and cash payment). Corporate actions.  FMMA-Lecture6.pdf FMMA-Lecture7.pdf
  6. Regulation. Settlement risk. Systemic risk. global regulators. US, EU and UK Regulators. Example legislation. Need for confidentiality.  FMMA-Lecture8.pdf

Section 2: Markets

This section provides an academic introduction to the study of financial markets. It covers the following material:

  1. Auctions. Walrasian auction. Double auction. Call auction. Continuous double auction.     FMMA-Lecture9.pdf
  2. Markets and microstructure. Execution venues. Limit Order Book and orders. Market data and Private data. Market structure, fees and costs. Market protection.  FMMA-Lecture10.pdf    FMMA-Lecture11.pdf 
  3. Market making. Market makers, dealers and specialists. Market making in a quote-driven market. Market making in an order-driven market. Risk-averse market making. Hot potato trading.  FMMA-Lecture12.pdf  FMMA-Lecture13.pdf
  4. High frequency trading. Low latency versus high frequency trading. HFT definitions. Types of HFT. Latency arbitrage. Academic studies of HFT. FMMA-Lecture14.pdf  FMMA-Lecture15.pdf

Section 3: Techniques

This section covers the following topics:

  1. A simple introduction to Game Theory. Extensive form and normal form. Nash equilibrium. Payoff tree and payoff matrix. Keynesian beauty competition. The puzzle of the green-eyed tribe. Example payoff matriuces in finance. FMMA-Lecture16.pdf
  2. A simple introduction to Minority Games. The El Farol Bar problem. The original minority game structure. Stock markets as minority games. FMMA-Lecture17.pdf
  3. Agent-based modelling and simulation of financial markets. Models. Structure. Validation. Advantages and disadvantages. Examples (ABMs of Limit Order Books).FMMA-Lecture18  FMMA-Lecture19.pdf.pdf
  4. Dynamic Optimisation. Introduction (dynamic optimisation and dynamic programming). Bellman's Principle of Optimality. The Bellman Equation in discrete time (example, stochastic example, backward induction.FMMA-Lecture20.pdf

Section 4: Models

This section analyses three research papers in depth, examining how different aspects of market behaviour can be modelled and analysed in different ways. It finishes by building on the third paper with an analysis of dynamically-coupled market making.

  1. Bulls Bears and Market Sheep (1990) by Richard Day and Weihong Huang. Models the unpredictable, fluctuating nature of stock market prices and their tendency to generate alternating periods iof "bull" and "bear" markets. Derives this from the interaction between two simple models of trading behaviour. A traditional model of excess demand and price adjustment based on "stylized institutional realities". A simple equational model of contrarian and momentum traders leads to complex market behaviour, which can be analysed by plotting price at time step t+1 against price at time step t. FMMA-Lecture21.pdf
  2. A simultaneous trade model of the foreign exchange hot potato (1997) by Richard Lyons. A two-period discrete-time model of hot potato trading. Models what information is known at each point in time, and how that informs quoting behaviour and inventory management. Also models the market impact of hot potato trading in a dealer market.FMMA-Lecture22.pdf
  3. Optimal market-making with risk aversion (2012) Kan Huang, David Simchi-Levi and Miao Song. Discrete-time model of risk-averse market making in a dealer market. Assumes inventory limits, and that inventory is controlled via trades with other dealers. Uses dynamic optimisation to deduce an optimal strategy. Model formulation and exponential utility criterion. Dynamic optimisation. Solving the Bellman equation. Optimal policy rebalances exactly to a dynamic inventory threshold.FMMA-Lecture23.pdf  FMMA-Lecture24.pdf  FMMA-Lecture25.pdf
  4. Building on the Huang et al model for coupled risk-averse market makers. Explores the effect of dynamic interaction between two market makers, each executing an optimal Huang et al risk-averse policy. Simple numerical simulation indicates that inventories and profits oscillate wildly. Market makers lose the ability to control their inventories. The provable optimal Huang et al strategy is no longer optimal when assumptions are changed. FMMA-Lecture26.pdf

Dynamic Memory Management

Dynamic Memory Management (DM) is essential to the implementation of functional languages and many other modern programming languages. Prior to Clack's research, DMM could either be fast or small (i.e. have low fragmentation) but not both. DMM is a very mature research area, and to identify a new algorithm is a considerable challenge. By using a tree bitmap representation and altering the search semantics, a best-fit free-list memory allocator was created that provides both a ten times improvement in worst-case performance and excellent best-case performance. The allocator was patented:

  • A Data Structure, Memory Allocator and Memory Management System (Clack, UK Patent Application number 9924061.6, filing date 11th October 1999. PCT application number WO0231660, filing date 10th October 2001. UK and EU Patent Offices.

Smart Contracts Terminology

Smart Contracts utilize computer technology to automate an agreement. However, the term "smart contract" is used in different ways according to context: as originally envisaged in the mid 1990s by Szabo [Link], the term "smart contract" embraced automation at many different levels during the lifecycle of an agreement; yet since 2013 it has also been used to describe computer code developed for a scripting functionality provided by some distributed ledger systems (e.g. Ethereum [Link]).

Since much of our work is interdisciplinary, and brings together researchers from different groups who use the term "smart contract" in subtly different ways, we use the following definitions:

  • Smart Contract.
    "A smart contract is an automatable and enforceable agreement. Automatable by computer, although some parts may require human input and control. Enforceable either by legal enforcement of rights and obligations or via tamper-proof execution of computer code."Smart Contract Templates: foundations, design landscape and research directions, C.D.Clack, V.A.Bakshi and L.Braine. 2016. arXiv:1608.00771. [Link to arXiv repository].
  • Smart Contract Code,
    Where computer code (such as a script developed for a distributed ledger) is used directly to automate some aspect of an agreement between counterparties (such that the counterparties of the agreement associated with that script can be identified), we call it "smart contract code"
  • Technical Smart Contract.
    Where such computer code is used indirectly in automating some aspect of agreements (where the code is not solely associated with one particular agreement), we currently call it a "technical smart contract" or sometimes a "tactical smart contract"
  • Smart Legal Contract.
    Where necessary to avoid ambiguity, we use the term "smart legal contract" to refer to a legal agreement that is the subject of automation (e.g. whose performance is automated through the running of smart contract code).
  • Computable Contract.
    A "computable contract" is a legal contract that is understandable by both humans and computers.


Publications List

Selected publications

    1. Languages for Smart and Computable Contracts, C.D.Clack. Author preprint available at: arXiv:2104.03764 . 2021.
    2. Events Within Smart Derivatives Contracts, Ciaran McGonagle and Christopher D. Clack. International Journal of Blockchain Law 1:30-36. Available at: 2021.

    1. Smart Close-out Netting, A. Datoo and C.D.Clack. To appear: Journal of Securities Operations and Custody. Author preprint available at: arXiv:2011.07379 . 2020.
    2. Transforming Commercial Contracts through Computable Contracting, J. Cummins and C.D.Clack. ArXiv preprint. Available at:  arXiv:2003.10400. 2020. To appear: Journal of Strategic Contracting and Negotiation.

    1. The Sensitivity of Trivariate Granger Causality to Test Criteria and Data Errors, L. Carlos-Sandberg and C.D.Clack. arXiv preprint arXiv:1904.07920  . 2019.
    2. Distributed Ledger Privacy: Ring Signatures, Mobius and CryptoNote, C.D.Clack and N.Courtois. . 2019.
    3. Smart Derivatives Contracts: the ISDA Master Agreement and the automation of payments and deliveries, C.D.Clack and C.McGonagle. Available at: arXiv:1904.01461.   2019.

    1. Temporal Aspects of Smart Contracts for Financial Derivatives, C. D. Clack and G. Vanca. LNCS 11247:339-355. 2018. Available at: [Springer], arXiv:1805.11677, and [this local link][BibTeX]
    2. Smart Contract Templates:legal semantics and code validation, C. D. Clack. Journal of Digital Banking 2(4)338-352 2018. Local Link: [here][BibTeX]
    3. InterDyne: A Simulation Method for Exploring Emergent Behavior Deriving From Interaction Dynamics, C. D. Clack and L. Carlos-Sandberg. In Engineering Emergence: A Modeling and Simulation Approach, L. B. Rainey and M. Jamshidi, Eds., CRC Press.ISBN 9781138046160. 2018
    4. Design Discussion on the ISDA Common Domain Model, C.D.Clack. Journal of Digital Banking 3(2):165-187. 2018 
    5. A blockchain grand challenge: smart financial derivatives, C. D. Clack, Frontiers in Blockchain 1(1), 2018. Available here.

    1. Smart Contract Templates: foundations, design landscape and research directions, C.D.Clack, V.A.Bakshi and L.Braine. arxiv:1608.00771.August 2016

      Published at: arXiv:1608.00771

    2. Smart Contract Templates: essential requirements and design options, C.D.Clack, V.A.Bakshi and L.Braine. arxiv:1612.04496.December 2016

      Published at: arXiv:1612.04496

    1. Dynamic Coupling and Market Instability, C. D. Clack, E. Court, D. Zaparanuks. arXiv:2005.13621.2014

      Available at: arXiv:2005.13621

    1. Diatom colony formation: A computational study predicts a single mechanism can produce both linkage and separation valves due to an environmental switch. K.Bentley, C.Clack and E.Cox. Journal of Phycology 48(3):716-728. 2012

      Our novel agent-based technique simulates morphological dynamics in living tissue; this paper addresses diatom morphology and the technique has since been applied to cancer tumour morphology. This work has led to the founding of a morphogenesis modelling laboratory at Harvard. Unlike previous models, we recreate detailed mechanisms and chemical interactions and this paper provides unexpected evidence that a single mechanism produces two different types of morphogenesis. We faithfully reproduce rib-domination phenomena and our model, experimental methodology, and results, were assessed against state of the art techniques and SEM data by the Natural History Museum.

    1. Evolving robust GP solutions for hedge fund stock selection in emerging markets, W.Yan and C.Clack, J. Soft Computing 15(1):37--50, Springer, DOI: 10.1007/s00500-009-1511-4, 2011Draft PDF (353k)

      This invited paper in the journal special issue on “Bio-Inspired Learning and Intelligent Systems” presents our Genetic Programming technique for portfolio optimisation; the first such technique to propose preserving diversity of dynamic phenotypic behaviour, and optimisation of investment returns rather than price-prediction. It is robust to market volatility, reducing down-time while gathering data for retraining, and demonstrates a 3-times performance improvement. The technique is being used by SIAM Capital, is included in Hitoshi Iba's recent book on Evolutionary Computation in Financial Engineering, and has been shown to have superior performance to Support Vector Machines.

    2. High Frequency Trading - Bugs, Glitches, False Liquidity and Open Warfare, C.Clack, in Buy-side intelligence - the Euromoney guide to securities trading, pp 21--26, pub: Euromoney Trading Ltd., ISBN 978-184374-863-2, 2011

    1. Identifying multi-level emergent behaviours in agent-directed simulations using Complex Event Type specifications, C-C.Chen, S.Nagl and C.Clack, SIMUL-T SOC MOD SIM 86(1):41--51. 2010.

      DOI: 10.1177/0037549709106692

      The novel Complex-Event formalism described in this paper has since been applied by oncologists to model cancerous tumour growth, with specific success in the field of colonic crypt tumorigenesis. The journal was ranked 3rd out of 14 journals covering the field of computer simulation. The formalism supports the modelling of phenomena that are distributed simultaneously across different physical and temporal levels; superiority over alternative modelling techniques has been independently validated, and as further validation this paper demonstrates how it extends the established X-Machines formalism.

    1. Complexity and Emergence in Engineering Systems, C-C.Chen, S.Nagl and C.Clack. In Complex Systems in Knowledge-Based Environments: Theory, Models and Applications. Studies in Computational Intelligence 168:99-128, ISBN 978-3-540-88074-5, Springer. 2009.
    2. Robustness of Multiple Objective GP Stock-Picking in Unstable Financial Markets, G.Hassan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2009), pp 1513--1520. ACM. ISBN 978-1-60558-325-9/09/07. 2009.PDF (1M)
    3. Behavioural GP Diversity for Adaptive Stock Selection, W.Yan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2009), pp 1641--1648. ACM. ISBN 978-1-60558-325-9/09/07. 2009. PDF.
    4. A formalism for multi-level emergent behaviours in designed component-based systems and agent-based simulations, C-C.Chen, S.Nagl, and C.Clack, chapter in "From System Complexity to Emergent Properties". Understanding Complex Systems 44:101-114, ISBN 978-3-642-02198-5, Springer. 2009.

    1. GP Age-layer and Crossover Effects in Bid-Offer Spread Prediction, A.Willis, S.Patel and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2008). pp1665-1672. ACM. ISBN 978-1-60558-131-6/08/07. 2008. PDF (520k)
    2. Multiobjective Robustness for Portfolio Optimization in Volatile Environments, G.Hassan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2008), pp1507-1514. ACM. ISBN 978-1-60558-131-6/08/07. (nominated for a best-paper award) 2008. PDF (373K)

      This paper was nominated for a Best Paper award; is now cited in Hitoshi Iba's key new book surveying the field of Evolutionary Computation in Financial Engineering; was supported by Thomson Reuters; prompted seven invited talks at industry conferences (including Trade Tech (TT) Europe, TT Architecture, TT Liquidity, HiFreq Trade and CSFI); and the work was also presented at two invited talks at subsequent GECCO conferences. Our novel work is the first to identify a significant instability whereby cautious investment strategies can unwittingly become adventurous, and vice versa, following a shift in market regime.

    3. Learning to optimize profits beats predicting returns - comparing techniques for financial portfolio optimisation, W.Yan, M.Sewell and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2008), pp1681-1688. ACM. ISBN 978-1-60558-131-6/08/07. 2008.
    4. A method for validating and discovering associations between multi-level emergent behaviours in agent-based simulations, C-C.Chen, S.Nagl and C.Clack. In Proceedings 2nd KES International Symposium on Agent and Multi-Agent Systems : Technologies and Applications. Lecture Notes in Artifical Intelligence 4953:1-10, ISBN 978-3-540-78581-1. Springer. 2008. PDF (211k)
    5. Multi-level behaviours in agent-based simulation: colonic crypt cell populations, C-C.Chen, S.Nagl and C.Clack. In Online Proceedings, 7th International conference on Complex Systems, NECSI and Interjournal. 2008.

    1. Context sensitivity in individual-based modeling, C-C.Chen, C.Clack and S.Nagl, BMC Systems Biology 1, Supplement 1, pp 44. ISSN 1752-0509 2007. PDF (187k)
    2. A calculus for multi-level emergent behaviours in component-based systems and simulations, C-C.Chen, S.Nagl and C.Clack, in Proceedings of Emergent Properties in Natural and Artificial Complex Systems (EPNACS'2007), part of the 4th European Conference on Complex Systems (ECCS'07), pp 35-51. Electronic publication 2007. PDF (664k)
    3. Specifying, Detecting and Analysing Emergent Behaviours in Multi-Level Agent-Based Simulations, C-C.Chen, S.Nagl and C.Clack, in Proceedings of the Summer Computer Simulation Conference (SCSC 2007), pp 969--976, ISBN 1-56555-316-0. 2007. PDF (184k)

      This paper is the first ever to describe a multi-agent simulation method for describing and monitoring emergent behaviour in a way that retains the underlying structure of that behaviour. This supports analysis of the mechanisms at a lower level that give rise to emergent behaviours. Thus, emergent behaviour may be explained by inspecting its causal structure. This method has very wide applicability: in simulations of biology, of financial markets, and of any system containing hierarchies and emergent behaviour. Invited by the program chair to submit an expanded version as a chapter to a new book "Complex Systems In Knowledge-Based Environments".

    4. Nonlinearity linkage detection for financial time series analysis, T.Chiotis and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2007), pp 1179-1186. ACM. ISBN 978-1-59593-697-4/07/0007. 2007Gzipped PDF (2.1M)
    5. Evolving robust GP solutions for hedge fund stock selection in emerging markets, W.Yan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2007), pp 2234-2241. ACM. ISBN 978-1-59593-697-4/07/0007. 2007Winner of Best Paper Award. Gzipped PDF (255k)

      Winner of a Best Paper award at the top conference in the field. Industry trials commenced. Addresses a serious problem with Genetic Programming (GP) systems operating in a volatile environment, which suffer substantial performance degradation. Analyses prior work on robustness and finds none sufficient to counter the extreme volatility of the financial markets. Identifies extreme segments in training data, and uses a volatility-adjusted fitness metric during segmented training. Rigorous experimentation and statistical analysis on the notoriously volatile Malaysian equities market shows outstanding improvements over standard GP, index tracking, and technical analysis.

    6. Evolutionary simulation of hedging pressure in futures markets, J.Duke and C.Clack, in Proceedings IEEE CEC pp 782-789. 2007. Gzipped PDF (715k)
    7. Diverse committees vote for dependable profits, W.Yan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2007), pp 2226-2233. ACM. ISBN 978-1-59593-697-4/07/0007. 2007Gzipped PDF (231k)

      Published at the top Genetic Programming (GP) conference. Industry trials commenced. Invited to contribute expanded version to Journal of Soft Computing. Sister paper to "Evolving robust GP solutions for hedge fund stock selection in emerging markets". Addresses a serious problem where GP systems suffer substantial performance degradation in volatile environments. Analyses prior work and finds none sufficient to counter the extreme volatility of the financial markets. Identifies extreme segments in training data; trains separate solutions, which operate as a committee. Explores averaging and voting for robustness. Statistical analysis on the volatile Malaysian equities market shows outstanding improvements over standard GP.

    8. ALPS evaluation in Financial Portfolio Optmisation, S.Patel and C.Clack, IEEE CEC, pp 813-819, ISBN 1-4244-1340-0. 2007. PDF (208k)

      CEC is IEEE's key annual Genetic Programming conference, second only to GECCO. CEC typically has high submission rates (e.g. 660) and 400+ delegates. In 2006 Hornby's Age-Layered Population Structure system was introduced, but with no real-world validation. This paper provides the first ever evaluation of ALPS on a real-world problem - the evolution of non-linear factor models for financial portfolio optimization. We show that ALPS reduces convergence and provides fitter individuals, out-performing both the market index and Standard GP. This is a substantial empirical study with rigorous statistical analysis. A version is being developed for an Investment Fund Manager.

    9. Using an evolutionary agent-based simulation to explore hedging pressure in futures markets, J.Duke and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2007), pp 2257. ACM. ISBN 978-1-59593-697-4/07/0007. 2007. Gzipped PDF (20k)

    1. gLINC: Identifying Composability using Group Perturbation, D.Coffin and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2006), pp1133-1140. ACM. ISBN 1-59593-186-4. 2006 Gzipped PDF (121k)
    2. BioScience Computing and the role of computational simulation in biology and medicine, C.D.Clack, in "Intelligent Algorithms in Ambient and Biomedical Computing ", eds. W.Verhaegh, E. rts and J.Korst, pp 3-19, Philips Research Book Series, Vol. 7, Springer, 2006. ISBN 1-4020-4953-6. Gzipped PDF (631k).
    3. Behavioural GP Diversity for Dynamic Environments: an application in hedge fund investment, W.Yan and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2006), pp 1817-1824. ACM. ISBN 1-59593-186-4. 2006 Gzipped PDF (719k)

      This paper was published in the top conference in the field; it introduces for the first time the important concept of phenotypic behavioural diversity for Genetic Programming, and demonstrates how preservation of the diversity of phenotypic behaviour leads to improved solutions that are more robust and more generic (that is, the achievement of success through learning general relationships rather than curve-fitting). The problem domain is financial portfolio optimisation. The paper describes a specific technique for preserving phenotypic behavioural diversity, and presents the results of a substantial and rigorous empirical investigation using real-world financial data sourced from Reuters. The results have attracted significant industry attention and we are currently working on technology transfer with two investment funds.

    1. Morphological Plasticity: Environmentally Driven Morphogenesis, K.Bentley and C.Clack, VIIIth European Conference on Artificial Life (ECAL 2005), Springer LNAI 3630, pp118-127, September 2005 Gzipped PDF (768k).

    1. The Artificial Cytoskeleton for Lifetime Adaptation of Morphology, K.Bentley and C.Clack, in SODANS workshop proceedings of the Ninth International Conference on the Simulation and Synthesis of Living Systems (ALIFE IX), pp 13-16, 2004 PDF (380k).

    1. Royal Road Encodings and Schema Propagation in Selective Crossover, K.Vekaria and C.Clack, In Suzuki, Y., Ovaska, S., Furuhashi, T., Roy, R., and Dote, Y. (eds.) Soft Computing in Industrial Applications, pp 281-292. Springer-Verlag. Proceedings of WSC4 (21-30 Sept 1999). 2000 Postscript (175k).
    2. Implementation of Functional Languages, Pieter Koopman and Chris Clack (Eds.), Proceedings of the 11th International Workshop (IFL'99), Spinger Verlag LNCS 1868, 2000

    1. Schema Propagation in Selective Crossover K.Vekaria and C.Clack, in late breaking papers at the Genetic and Evolutionary Computation Conference (GECCO'99), eds. S.Brave and A.S.Wu, pages 268-275. 1999

      (Equation 5 in this paper has an error; a correction is provided in the two papers "Hitchhikers Get Around", and "Royal Road Encodings and Schema Propagation"). Gzipped PDF(6.12M)Gzipped PDF (217k)

    2. Realisations for Non-Strict Languages, C.D.Clack, in "Research Directions in Parallel Functional Programming", eds. K.Hammond and G.Michaelson, pp 149-187, Springer-Verlag, October 1999. ISBN 1-85233-092-9. Gzipped PDF (13.6M).
    3. Implementation of Functional Languages, Kevin Hammond, Tony Davie and Chris Clack (Eds.), Proceedings of the 10th International Workshop (IFL'98), Spinger Verlag LNCS 1595, 1999.
    4. Hitchhikers Get Around K.Vekaria and C.Clack, Research Note RN/99/11, University College London, Gower Street, London WC1E 6BT. 1999Postscript (482k).
    5. Foundations, G.Michaelson, K.Hammond and C.Clack, in "Research Directions in Parallel Functional Programming", eds. K.Hammond and G.Michaelson, pp 31-61, Springer-Verlag, October 1999. ISBN 1-85233-092-9.
    6. Biases Introduced by Adaptive Recombination Operators, K.Vekaria and C.Clack, in Proceedings of the Genetic and Evolutionary Computation Conference (GECCO'99), July 13-17, 1999, Orlando, Florida USA, eds. Banzhaf et al., pp 670-677, Morgan Kaufmann, ISBN 1558606114 1999Postscript gecco99(783k).
    7. A Data Structure, Memory Allocator and Memory Management System, C.Clack, UK Patent Application number 9924061.6, filing date 11th October 1999. PCT filing date 10th October 2001, number WO0231660. Title (Gzipped Word, 150k) Abstract (PDF, 36K)claims(PDF, 26K)description(Gzipped Word, 35K)Images ("Mosaics") (Gzipped Word, 90K),

    1. Selective Crossover in Genetic Algorithms: An Empirical Study, K.Vekaria and C.Clack, Proc. 5th Conference on Parallel Problem Solving from Nature, LNCS 1498, pp 438-447, 1998Postscript (447k)PDF (58k).
    2. Simulating an object-oriented financial system in a functional language, L. Braine, K.Haviland, O. Smith-Jaynes, A. Vautier and C.Clack, pub: Andersen Consulting, London 1998.
    3. Selective Crossover in Genetic Algorithms, K.Vekaria and C.Clack, Proc. Genetic Programming 1998, pp 609, 1998 Postscript (92k).
    4. Recursion, Lambda Abstraction and Genetic Programming, T.Yu and C.Clack, Proc. Third Genetic Programming Conference, J.R. Koza, W. Banzhaf, K.Chellapilla, K. Deb, M. Dorigo, D.B. Fogel, M.H. Garzon, D.E. Goldberg, H. Iba, R. Riolo (Eds.), pp 422-431, Morgan Kaufmann, 1-55860-548-7.1998Postscript (141k).
    5. PolyGP: A Polymorphic Genetic Programming System in Haskell, T.Yu and C.Clack, Proc. Third Genetic Programming Conference, J.R. Koza, W. Banzhaf, K.Chellapilla, K. Deb, M. Dorigo, D.B. Fogel, M.H. Garzon, D.E. Goldberg, H. Iba, R. Riolo (Eds.), pp 416-421, Morgan Kaufmann, 1-55860-548-7. 1998Postscript (106k).
    6. Implementation of Functional Languages, Chris Clack, Kevin Hammond and Tony Davie (Eds.), Proceedings of the 9th International Workshop (IFL'97), Spinger Verlag LNCS 1467. ISBN 3-540-64849-6, 1998.

    1. PolyGP: A Polymorphic Genetic Programming System in Haskell, T.Yu and C.Clack, in J.Koza (ed) Late breaking papers at the Genetic Programming 1997 Conference, pp 264-272, 1997.
    2. Performance-Enhanced Genetic Programming, C.Clack and T.Yu, Proc. Evolutionary Programming 1997 Conference (EP'97), P.J. Angeline, R.G. Reynolds, J.R. McDonnell, and R. Eberhart (Eds), pp 87-100, Springer Verlag, LNCS 1213, ISBN 3-540-62788-X, 1997. Postscript (120k).
    3. Object-Flow, L. Braine and C. Clack, in Proceedings of the 13th IEEE Symposium on Visual Languages (VL'97), IEEE, pages 418-419, Capri, Italy, September 1997 Gzipped PostScript (159K)PDF (53k).
    4. Genetic Programming with Gene Dominance, K.Vekaria and C.Clack, in J.Koza (ed) Late breaking papers at the Genetic Programming 1997 Conference, pp 300, Stanford University, ISBN 0-18-206995-8 1997Postscript (57K).
    5. Object-Oriented Functional Spreadsheets, C. Clack and L.Braine, Proceedings of the 10th Glasgow Workshop on Functional Programming (GlaFP'97), pp1-12 1997.PDF1PDF2.
    6. The CLOVER Rewrite Rules: a Translation from OOFP to FP, L.Braine and C. Clack, Proceedings of the 9th International Workshop on Implementation of Functional Languages (IFL'97), pp467-488 1997.
    7. Emerging Technologies 1997: Theory and Application of Evolutionary Computation , C. Clack, K. Vekaria and N.Zin (Eds.), Proceedings of the 2nd Emerging Technologies Workshop (ET'97), UCL, 1997.
    8. Autonomous Document Classification for Business, C.Clack, J.Farringdon, P.Lidwell and T.Yu, Proceedings 5th Autonomous Agents Conference, W. Lewis Johnson (Ed.), pages 201-208, ACM Press, ISBN 0-89791-877-0, 1997Word (155K)Gzipped PDF (548k).

    1. Introducing CLOVER: an Object Oriented Functional Language, L.Braine and C.Clack, in W. Kluge (Ed.), Implementation of Functional Languages, 8th International Workshop (IFL'96), Selected Papers, Lecture Notes in Computer Science 1268, pages 1-20, Springer-Verlag, Bonn, ISBN 3-540-63237-9, September 1996 Gzipped PostScript (63K)
    2. Advanced Technology Support for Information Management at Friends of the Earth, C.D.Clack, S.J.Gould, P.R.Lidwell, J.T.McDonnell, Proc. Technology Transfer and Innovation 1996 conference, London, July 1996, pp 170-175 Gzipped PDF (533K)
    3. Emerging Technologies 1996: Software --- The Next Generation, C. Clack (Ed.), Proceedings of the 1st Emerging Technologies Workshop (ET'96), UCL, 1996.

    1. The Dys-Functional Student, C.Clack and C.Myers, FPLE '95, Springer-Verlag LNCS 1022, pp289-309, December 1995 Gzipped PDF (142K)
    2. Programmieren in MIRANDA, C.Clack, C.Myers, E.Poon, 335 pages, Prentice Hall International, 1995. ISBN 3-8272-9503-3 (Based on (2) below, but updated and substantially revised for this German language edition)
    3. Lexical Profiling: Theory and Practice, C.D. Clack, S. Clayman, D.J. Parrott, Journal of Functional Programming, Vol 5 No. 2, pp 225-277, April 1995 Gzipped PDF (294k).

    1. High-performance parallel graph reduction, S.L.Peyton Jones, C.D.Clack and J.D.Salkild, reprinted as a chapter in "Programming Languages for Parallel Processing", eds. D Skillicorn and D Talia, pp 254-247, IEEE Computer Society Press, Dec 1994. ISBN 0-8186-6502-5. PDF (5M)
    2. GRIP: the GRIP Multiprocessor, Chris Clack, in Parallel Computing Principles and Practice, ed. T.J.Fountain, CUP, 1994, pp 266-275. ISBN 0-521-45131-0 Gzipped PDF (404k)
    3. Analysing Resource Use in the Lambda Calculus by Type Inference, S. Courtenage, C. Clack, Proc. ACM SIGplan Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'94), Orlando, Florida, pp 33-42, June 1994 Gzipped PDF (88k).
    4. Programming with Miranda, C.Clack, C.Myers, E.Poon, 312 pages, Prentice Hall International, 1994. ISBN 0-13-192592-X.

    1. Programming with Standard ML, C.Myers, C.Clack, E.Poon, 301 pages, Prentice Hall International, 1993. ISBN 0-13-722075-8

    1. A Common Graphical Form, D.Parrott and C.Clack, in Proc. Phoenix Workshop on Declarative Programming, Sachsbachwalden, eds. J.Darlington and R.Dietrich, Springer-Verlag Workshops in Computing, 1992, pp224-238 Zipped PDF (152k)

    1. Paragon - a Language for Modelling Lazy, Functional Workloads on Distributed Processors, D.Parrott, C.Clack, Proceedings 8th UK Performance Engineering Workshop, A.J.Field, P.G.Harrison, eds., Imperial College, pp199-215, 1991 Zipped PDF (141k).

    1. GRIP – A High-Performance Architecture for Parallel Graph Reduction, Simon L. Peyton Jones, Chris Clack, Jon Salkild, Mark Hardie, in Multiprocessor Computer Architecture, pp 101-120, ed. T.J.Fountain and M.J.Shute, North Holland, Amsterdam, 1990. ISBN 0-444-88215-4. PDF (5M)
    2. GRIP Status Update - 1989, Chris Clack, in Multiprocessor Computer Architecture, pp 119-120, ed. T.J.Fountain and M.J.Shute, North Holland, Amsterdam, 1990. ISBN 0-444-88215-4

    1. High Performance Parallel Graph Reduction, Simon L Peyton Jones, Chris Clack and Jon Salkild, Proceedings 1989 PARLE conference, Eindhoven, Springer-Verlag LNCS 365, pp 193-206, June 1989 Gzipped PDF (5.4M).

    1. Functional Programming on the GRIP multiprocessor , Simon L.Peyton-Jones, Chris Clack, Jon Salkild, Mark Hardie, Proc. Intl Specialist Seminar on Design and Application of Parallel Digital Processors, pp 116-127, IEE, April 1988 PDF (757k).

    1. The four-stroke reduction engine, Chris Clack and Simon L Peyton-Jones, in "Dataflow and Reduction Architectures", pp 327-339, ed. Thakkar, IEEE Computer Society Press, 1987. ISBN 0-8186-0759-9 (this book is a collection of selected reprints of seminal papers from journals and conferences). PDF (3.6M)
    2. GRIP: A parallel graph reduction machine, Simon L Peyton Jones, Chris Clack and Jon Salkild, ICL Tech. Journal, pp 595-599, Vol.5, Issue 3, May 1987 Gzipped PDF.
    3. GRIP - a high performance architecture for parallel graph reduction, Simon L Peyton-Jones, Chris Clack, J Salkild and M.Hardie, Proceedings IFIP International Conference on Functional Programming Languages and Computer Architecture (FPLCA), Portland (USA), Springer-Verlag LNCS 274, pp 98-112, September 1987 Gzipped PDF (5M).
    4. Finding fixpoints in abstract interpretation, Chris Clack and Simon L Peyton-Jones, Chapter 11 (pp 246-265) in Abstract Interpretation of Declarative Languages, ed. Abramsky and Hankin, Ellis Horwood, 1987. ISBN 0-7458-0109-9 Gzipped PDF (4.02M)

    1. The four-stroke reduction engine, Chris Clack and Simon L Peyton-Jones, Proceedings 1986 ACM Conference on Lisp and Functional Programming, pp 220-232, Boston (USA), August 1986 PDF (3.6M).

    1. Strictness analysis - a practical approach, Chris Clack and Simon L Peyton-Jones, Proceedings IFIP International Conference on Functional Programming Languages and Computer Architecture (FPLCA), Nancy (France), Springer-Verlag LNCS 201, pp 35-49, September 1985 Postscript(84k).
    2. Generating Parallelism from Strictness Analysis, Clack, C and Peyton Jones, SL, Proceedings Workshop on Implementation of Functional Languages, Report 17, pp 92-131, Chalmers University of Technology and University of Goteborg. 1985

    1. A 10W single mode Pyrex waveguide CO2 laser, D Crocker, C D Clack, R J Butcher, Journal of Physics E: Scientific Instruments, Vol.14(1), pp 121-122, January 1981 PDF(188k).


Christopher D. Clack
Department of Computer Science
Gower Street