<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Paradigms</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/10/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Applied Category Theory - The Emerging Science of Compositionality</title>
 <link>http://lambda-the-ultimate.org/node/5581</link>
 <description>&lt;p &gt;An enjoyable 25-minute introductory talk: &lt;a href=&quot;https://www.youtube.com/watch?v=iwvl0tBJhoM&quot;&gt;YOW! Lambda Jam 2019 - Ken Scambler - Applied Category Theory&lt;/a&gt; (&lt;a href=&quot;https://www.slideshare.net/kenbot/applied-category-theory-the-emerging-science-of-compositionality&quot;&gt;slides&lt;/a&gt;)&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;What do programming, quantum physics, chemistry, neuroscience, systems biology, natural language parsing, causality, network theory, game theory, dynamical systems and database theory have in common?&lt;/p&gt;
&lt;p &gt;As functional programmers, we know how useful category theory can be for our work - or perhaps how abstruse and distant it can seem. What is less well known is that applying category theory to the real world is an exciting field of study that has really taken off in just the last few years. It turns out that we share something big with other fields and industries - we want to make big things out of little things without everything going to hell! The key is compositionality, the central idea of category theory.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Previously: &lt;a href=&quot;http://lambda-the-ultimate.org/node/5571&quot;&gt;Seven Sketches in Compositionality: An Invitation to Applied Category Theory&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;(via &lt;a href=&quot;https://twitter.com/puffnfresh&quot;&gt;Brian McKenna&lt;/a&gt;)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/25">Spotlight</category>
 <pubDate>Mon, 05 Aug 2019 14:08:02 +0000</pubDate>
</item>
<item>
 <title>Co-hygiene and quantum gravity</title>
 <link>http://lambda-the-ultimate.org/node/5441</link>
 <description>&lt;p &gt;&lt;b &gt;&lt;a href=&quot;http://fexpr.blogspot.com/2017/06/co-hygiene-and-quantum-gravity.html&quot;&gt;Co-hygiene and quantum gravity&lt;/a&gt;&lt;/b&gt;. &lt;span title=&quot;:P&quot;&gt;Some light weekend reading by John Shutt.&lt;/span&gt;&lt;/p&gt;
&lt;p &gt;The post starts with a dazzling proposition:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Gravity corresponds to pure function-application, and the other fundamental forces correspond to side-effects. ... quantum non-locality (&quot;spooky action at a distance&quot;) is part of the analog to side-effects ...&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I can&#039;t do it justice here, so if you&#039;re interested in John&#039;s fascinating take on the relationship between lambda calculus and quantum physics, hop on over!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 17 Jun 2017 15:11:24 +0000</pubDate>
</item>
<item>
 <title>Simon Peyton Jones elected into the Royal Society Fellowship</title>
 <link>http://lambda-the-ultimate.org/node/5332</link>
 <description>&lt;p &gt;&lt;A href=&#039;http://research.microsoft.com/en-us/people/simonpj/&#039;&gt;Simon Peyton Jones&lt;/A&gt; has been &lt;A href=&quot;https://royalsociety.org/fellows/fellows-directory/#?earliestelectedyear=2016&quot;&gt;elected&lt;/A&gt; as a &lt;A href=&#039;https://royalsociety.org/people/simon-peyton-jones-12889/&#039;&gt;Fellow of the Royal Society&lt;/A&gt;. The Royal Society biography reads:&lt;BLOCKQUOTE &gt;&lt;br &gt;
Simon&#039;s main research interest is in functional programming languages, their implementation, and their application. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.&lt;/p&gt;
&lt;p &gt;More generally, Simon is interested in language design, rich type systems, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation -- that is one reason he loves functional programming so much.&lt;/p&gt;
&lt;p &gt;Simon is also chair of Computing at School, the grass-roots organisation that was at the epicentre of the 2014 reform of the English computing curriculum.&lt;br &gt;
&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p &gt;Congratulations SPJ!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/25">Spotlight</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 30 Apr 2016 19:44:24 +0000</pubDate>
</item>
<item>
 <title>Using Commutative Assessments to Compare Conceptual Understanding in Blocks-based and Text-based Programs</title>
 <link>http://lambda-the-ultimate.org/node/5226</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://dl.acm.org/citation.cfm?doid=2787622.2787721&quot;&gt;Using Commutative Assessments to Compare Conceptual Understanding in Blocks-based and Text-based Programs&lt;/a&gt;, David Weintrop, Uri Wilensky. Proceedings of the eleventh annual International Conference on International Computing Education Research. Via &lt;a href=&quot;https://computinged.wordpress.com/2015/08/17/icer-2015-blocks-win-programming-language-design-ui-design/&quot;&gt;Computing Education Blog&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Blocks-based programming environments are becoming increasingly common in introductory programming courses, but to date, little comparative work has been done to understand if and how this approach affects students&#039; emerging understanding of fundamental programming concepts. In an effort to understand how tools like &lt;a href=&quot;https://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt; and &lt;a href=&quot;https://developers.google.com/blockly/&quot;&gt;Blockly&lt;/a&gt; differ from more conventional text-based introductory programming languages with respect to conceptual understanding, we developed a set of &quot;commutative&quot; assessments. Each multiple-choice question on the assessment includes a short program that can be displayed in either a blocks- based or text-based form. The set of potential answers for each question includes the correct answer along with choices informed by prior research on novice programming misconceptions. In this paper we introduce the Commutative Assessment, discuss the theoretical and practical motivations for the assessment, and present findings from a study that used the assessment. The study had 90 high school students take the assessment at three points over the course of the first ten weeks of an introduction to programming course, alternating the modality (blocks vs. text) for each question over the course of the three administrations of the assessment. Our analysis reveals differences on performance between blocks-based and text-based questions as well as differences in the frequency of misconceptions based on the modality. Future work, potential implications, and limitations of these findings are also discussed.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Mon, 17 Aug 2015 12:25:44 +0000</pubDate>
</item>
<item>
 <title>Punctuated equilibrium in the large scale evolution of programming languages</title>
 <link>http://lambda-the-ultimate.org/node/5201</link>
 <description>&lt;p &gt;&lt;i &gt;Sergi Valverde and Ricard Solé, &lt;a href=&quot;http://www.santafe.edu/media/workingpapers/14-09-030.pdf&quot;&gt;&quot;Punctuated equilibrium in the large scale evolution of programming languages&quot;&lt;/a&gt;, SFI working paper 2014-09-030&lt;/i&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt; Here we study the large scale historical development of programming languages, which have deeply marked social and technological advances in the last half century. We analyse their historical connections using network theory and reconstructed phylogenetic networks. Using both data analysis and network modelling, it is shown that their evolution is highly uneven, marked by innovation events where new languages are created out of improved combinations of different structural components belonging to previous languages. These radiation events occur in a bursty pattern and are tied to novel technological and social niches. The method can be extrapolated to other systems and consistently captures the major classes of languages and the widespread horizontal design exchanges, revealing a punctuated evolutionary path.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The results developed here are perhaps not that surprising to people familiar with the history of programming languages. But it&#039;s interesting to see it all formalized and analyzed.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Fri, 17 Jul 2015 18:58:41 +0000</pubDate>
</item>
<item>
 <title> Don Syme receives a medal for F#</title>
 <link>http://lambda-the-ultimate.org/node/5193</link>
 <description>&lt;p &gt;&lt;A href=&quot;http://research.microsoft.com/en-us/people/dsyme/&quot;&gt;Don Syme&lt;/A&gt; receives the Royal Academy of Engineering&#039;s &lt;A href=&quot;http://www.raeng.org.uk/grants-and-prizes/prizes-and-medals/individual-awards/silver-medal&quot;&gt;Silver Medal&lt;/A&gt; for &lt;A href=&quot;http://www.raeng.org.uk/news/news-releases/2015/july/pioneering-innovators-to-receive-academy-silver-me&quot;&gt;his work on F#&lt;/A&gt;. The citation reads:&lt;br &gt;
&lt;BLOCKQUOTE &gt;&lt;br &gt;
F# is known for being a clear and more concise language that interoperates well with other systems, and is used in applications as diverse asanalysing the UK energy market to tackling money laundering. It allows programmers to write code with fewer bugs than other languages, so users can get their programme delivered to market both rapidly and accurately. Used by major enterprises in the UK and worldwide, F# is both cross-platform and open source, and includes innovative features such as unit-of-measure inference, asynchronous programming and type providers, which have in turn influenced later editions of C# and other industry languages.&lt;br &gt;
&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p &gt;Congratulations!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/23">Cross language runtimes</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 03 Jul 2015 19:16:06 +0000</pubDate>
</item>
<item>
 <title>Seemingly impossible programs</title>
 <link>http://lambda-the-ultimate.org/node/5074</link>
 <description>&lt;p &gt;In case this one went under the radar, at &lt;A href=&quot;http://www.cse.psu.edu/popl/12/&quot;&gt;POPL&#039;12&lt;/A&gt;, &lt;A href=&quot;http://www.cs.bham.ac.uk/~mhe/&quot;&gt;Martín Escardó&lt;/A&gt; gave a tutorial on &lt;A href=&quot;http://www.cs.bham.ac.uk/~mhe/.talks/popl2012/escardo-popl2012.pdf&quot;&gt;seemingly impossible functional programs&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Programming language semantics is typically applied to&lt;br &gt;
prove compiler correctness and allow (manual or automatic) program&lt;br &gt;
verification. Certain kinds of semantics can also be applied to&lt;br &gt;
discover programs that one wouldn&#039;t have otherwise thought of. This is&lt;br &gt;
the case, in particular, for semantics that incorporate topological&lt;br &gt;
ingredients (limits, continuity, openness, compactness). For example,&lt;br &gt;
it turns out that some function types (X -&amp;gt; Y) with X infinite (but&lt;br &gt;
compact) do have decidable equality, contradicting perhaps popular&lt;br &gt;
belief, but certainly not (higher-type) computability theory. More&lt;br &gt;
generally, one can often check infinitely many cases in finite time.&lt;/p&gt;
&lt;p &gt;I will show you such programs, run them fast in surprising instances,&lt;br &gt;
and introduce the theory behind their derivation and working. In&lt;br &gt;
particular, I will study a single (very high type) program that (i)&lt;br &gt;
optimally plays sequential games of unbounded length, (ii) implements&lt;br &gt;
the Tychonoff Theorem from topology (and builds finite-time search&lt;br &gt;
functions for infinite sets), (iii) realizes the double-negation shift&lt;br &gt;
from proof theory (and allows us to extract programs from classical&lt;br &gt;
proofs that use the axiom of countable choice). There will be several&lt;br &gt;
examples in the languages Haskell and Agda.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A &lt;A href=&quot;http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/&quot;&gt;shorter version&lt;/A&gt; (coded in Haskell) appears in Andrej Bauer&#039;s blog.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Wed, 22 Oct 2014 09:57:47 +0000</pubDate>
</item>
<item>
 <title>sml-family.org</title>
 <link>http://lambda-the-ultimate.org/node/5058</link>
 <description>&lt;p &gt;In his &lt;A href=&quot;http://existentialtype.wordpress.com/2014/09/26/sml-family-org-up-and-running/&quot;&gt;blog&lt;/A&gt;, &lt;A href=&quot;http://www.cs.cmu.edu/~rwh/&quot;&gt;Bob Harper&lt;/A&gt;, in joint effort with &lt;A href=&quot;http://people.cs.uchicago.edu/~dbm/&quot;&gt;Dave MacQueen&lt;/A&gt; and &lt;A href=&quot;http://www.lars.com/&quot;&gt;Lars Bergstrom&lt;/A&gt;, announces the launch of &lt;A href=&quot;http://sml-family.org&quot;&gt;sml-family.org&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The Standard ML Family project provides a home for online versions of various formal definitions of Standard ML, including the &quot;Definition of Standard ML, Revised&quot; (Standard ML 97). The site also supports coordination between different implementations of the Standard ML (SML) programming language by maintaining common resources such as the documentation for the &lt;A href=&quot;http://sml-family.org/Basis/index.html&quot;&gt;Standard ML Basis Library&lt;/A&gt; and standard test suites. The goal is to increase compatibility and resource sharing between Standard ML implementations. &lt;/p&gt;
&lt;p &gt;The site includes a &lt;A href=&quot;http://sml-family.org/#History&quot;&gt;history section&lt;/A&gt; devoted to the history of ML, and of Standard ML in particular. This section will contain a collection of original source documents relating to the design of the language.
&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Tue, 30 Sep 2014 19:27:43 +0000</pubDate>
</item>
<item>
 <title>Inferring algebraic effects</title>
 <link>http://lambda-the-ultimate.org/node/5055</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.lmcs-online.org/ojs/viewarticle.php?id=1469&amp;amp;layout=abstract&quot;&gt;Logical methods in computer science&lt;/A&gt; just published &lt;a href=&quot;http://matija.pretnar.info/&quot;&gt;Matija Pretnar&lt;/A&gt;&#039;s &lt;A href=&quot;http://arxiv.org/pdf/1312.2334.pdf&quot;&gt;latest take on algebraic effects and handlers&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We present a complete polymorphic effect inference algorithm for an ML-style language with handlers of not only exceptions, but of any other algebraic effect such as input &amp;amp; output, mutable references and many others. Our main aim is to offer the programmer a useful insight into the effectful behaviour of programs. Handlers help here by cutting down possible effects and the resulting lengthy output that often plagues precise effect systems. Additionally, we present a set of methods that further simplify the displayed types, some even by deliberately hiding inferred information from the programmer.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Pretnar and &lt;A href=&quot;http://andrej.com/&quot;&gt;Bauer&lt;/A&gt;&#039;s &lt;A href=&quot;http://eff-lang.org/&quot;&gt;Eff&lt;/A&gt; has made &lt;A href=&quot;http://lambda-the-ultimate.org/node/4090&quot;&gt;previous&lt;/A&gt; &lt;A href=&quot;http://lambda-the-ultimate.org/node/4481&quot;&gt;appearances&lt;/A&gt; here on LtU. Apart from the new fangled polymorphic effect system, this paper also contains an Eff tutorial. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 27 Sep 2014 23:16:37 +0000</pubDate>
</item>
<item>
 <title>A Next Generation Smart Contract and Decentralized Application Platform</title>
 <link>http://lambda-the-ultimate.org/node/5003</link>
 <description>&lt;p &gt;&lt;a href=&quot;https://www.ethereum.org/pdfs/EthereumWhitePaper.pdf&quot;&gt;A Next Generation Smart Contract and Decentralized Application Platform&lt;/a&gt;, Vitalik Buterin.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
When Satoshi Nakamoto first set the Bitcoin blockchain into motion in January 2009, he was simultaneously introducing two radical and untested concepts. The first is the &quot;bitcoin&quot;, a decentralized peer-to-peer online currency that maintains a value without any backing, intrinsic value or central issuer. So far, the &quot;bitcoin&quot; as a currency unit has taken up the bulk of the public attention, both in terms of the political aspects of a currency without a central bank and its extreme upward and downward volatility in price. However, there is also another, equally important, part to Satoshi&#039;s grand experiment: the concept of a proof of work-based blockchain to allow for public agreement on the order of transactions. Bitcoin as an application can be described as a first-to-file system: if one entity has 50 BTC, and simultaneously sends the same 50 BTC to A and to B, only the transaction that gets confirmed first will process. There is no intrinsic way of determining from two transactions which came earlier, and for decades this stymied the development of decentralized digital currency. Satoshi&#039;s blockchain was the first credible decentralized solution. And now, attention is rapidly starting to shift toward this second part of Bitcoin&#039;s technology, and how the blockchain concept can be used for more than just money.&lt;/p&gt;
&lt;p &gt;Commonly cited applications include using on-blockchain digital assets to represent custom currencies and financial instruments (&quot;colored coins&quot;), the ownership of an underlying physical device (&quot;smart property&quot;), non-fungible assets such as domain names (&quot;Namecoin&quot;) as well as more advanced applications such as decentralized exchange, financial derivatives, peer-to-peer gambling and on-blockchain identity and reputation systems. Another important area of inquiry is &quot;smart contracts&quot; - systems which automatically move digital assets according to arbitrary pre-specified rules. For example, one might have a treasury contract of the form &quot;A can withdraw up to X currency units per day, B can withdraw up to Y per day, A and B together can withdraw anything, and A can shut off B&#039;s ability to withdraw&quot;. The logical extension of this is decentralized autonomous organizations (DAOs) - long-term smart contracts that contain the assets and encode the bylaws of an entire organization. &lt;strong &gt;What &lt;a href=&quot;https://www.ethereum.org&quot;&gt;Ethereum&lt;/a&gt; intends to provide is a blockchain with a built-in fully fledged Turing-complete programming language that can be used to create &quot;contracts&quot; that can be used to encode arbitrary state transition functions, allowing users to create any of the systems described above, as well as many others that we have not yet imagined, simply by writing up the logic in a few lines of code.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Includes code samples.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/16">Parallel/Distributed</category>
 <pubDate>Wed, 23 Jul 2014 17:12:15 +0000</pubDate>
</item>
<item>
 <title>Dependently-Typed Metaprogramming (in Agda)</title>
 <link>http://lambda-the-ultimate.org/node/4804</link>
 <description>&lt;p &gt;&lt;A href=&quot;http://www.strictlypositive.org&quot;&gt;Conor McBride&lt;/A&gt; gave an 8-lecture summer course on &lt;A href=&quot;http://www.cl.cam.ac.uk/~ok259/agda-course-13/&quot;&gt;Dependently typed metaprogramming (in Agda)&lt;/A&gt; at the &lt;A href=&quot;http://www.cl.cam.ac.uk/&quot;&gt;Cambridge University Computer Laboratory&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Dependently typed functional programming languages such as Agda are capable of expressing very precise types for data. When those data themselves encode types, we gain a powerful mechanism for abstracting generic operations over carefully circumscribed universes. This course will begin with a rapid depedently-typed programming primer in Agda, then explore techniques for and consequences of universe constructions. Of central importance are the â€œpattern functorsâ€ which determine the node structure of inductive and coinductive datatypes. We shall consider syntactic presentations of these functors (allowing operations as useful as symbolic differentiation), and relate them to the more uniform abstract notion of â€œcontainerâ€. We shall expose the double-life containers lead as â€œinteraction structuresâ€ describing systems of effects. Later, we step up to functors over universes, acquiring the power of inductive-recursive definitions, and we use that power to build universes of dependent types.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The &lt;A href=&quot;https://github.com/pigworker/MetaprogAgda/blob/master/notes.pdf?raw=true&quot;&gt;lecture notes&lt;/A&gt;, &lt;A href=&quot;https://github.com/pigworker/MetaprogAgda&quot;&gt;code&lt;/A&gt;, and &lt;A href=&quot;http://www.youtube.com/playlist?list=PL_shDsyy0xhKhsBUaVXTJ2uJ78EGBpvQa&quot;&gt;video captures&lt;/A&gt; are available online. &lt;/p&gt;
&lt;p &gt;As with his &lt;A href=&quot;http://www.cl.cam.ac.uk/~ok259/agda-course/&quot;&gt;previous course&lt;/A&gt;, the notes contain many(!) mind expanding exploratory exercises, some of which quite challenging.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Fri, 30 Aug 2013 07:34:49 +0000</pubDate>
</item>
<item>
 <title>Simple Generators v. Lazy Evaluation</title>
 <link>http://lambda-the-ultimate.org/node/4690</link>
 <description>&lt;p &gt;Oleg Kiselyov, Simon Peyton-Jones and Amr Sabry: &lt;a href=&quot;http://okmij.org/ftp/continuations/PPYield/index.html&quot;&gt;Simple Generators&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Incremental stream processing, pervasive in practice, makes the best case for lazy evaluation. Lazy evaluation promotes modularity, letting us glue together separately developed stream producers, consumers and transformers. Lazy list processing has become a cardinal feature of Haskell. It also brings the worst in lazy evaluation: its incompatibility with effects and unpredictable and often extraordinary use of memory. Much of the Haskell programming lore are the ways to get around lazy evaluation.&lt;/p&gt;
&lt;p &gt;We propose a programming style for incremental stream processing based on typed simple generators. It promotes modularity and decoupling of producers and consumers just like lazy evaluation. Simple generators, however, expose the implicit suspension and resumption inherent in lazy evaluation as computational effects, and hence are robust in the presence of other effects. Simple generators let us accurately reason about memory consumption and latency. The remarkable implementation simplicity and efficiency of simple generators strongly motivates investigating and pushing the limits of their expressiveness.&lt;/p&gt;
&lt;p &gt;To substantiate our claims we give a new solution to the notorious pretty-printing problem. Like earlier solutions, it is linear, backtracking-free and with bounded latency. It is also modular, structured as a cascade of separately developed stream transducers, which makes it simpler to write, test and to precisely analyze latency, time and space consumption. It is compatible with effects including IO, letting us read the source document from a file, and format it as we read.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is fascinating work that shows how to gain the benefits of lazy evaluation - decoupling of producers, transformers, and consumers of data, and producing only as much data as needed - in a strict, effectful setting that works well with resources that need to be disposed of once computation is done, e.g. file handles.&lt;/p&gt;
&lt;p &gt;The basic idea is that of Common Lisp signal handling: use a hierarchical, dynamically-scoped chain of handler procedures, which get called - on the stack, without unwinding it - to parameterize code.  In this case, the producer code (which e.g. reads a file character by character) is the parameterized code: every time data (a character) is produced, it calls the dynamically innermost handler procedure with the data (it &lt;em &gt;yields&lt;/em&gt; the data to the handler). This handler is the data consumer (it could e.g. print the received character to the console).  Through dynamic scoping, each handler may also have a super-handler, to which it may yield data. In this way, data flows containing multiple transformers can be composed.&lt;/p&gt;
&lt;p &gt;I especially like &lt;a href=&quot;https://github.iu.edu/sabry/PPYield/blob/master/simple_gen.ml&quot;&gt;the OCaml version of the code&lt;/a&gt;, which is just a page of code, implementing a dynamically-scoped chain of handlers. After that we can already write &lt;a href=&quot;https://github.iu.edu/sabry/PPYield/blob/master/simple_gen.ml#L39&quot;&gt;map and fold&lt;/a&gt; in this framework (fold using a loop and a state cell, notably.)  There&#039;s &lt;a href=&quot;https://github.iu.edu/sabry/PPYield/blob/master/yany.ml&quot;&gt;more sample code&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;This also ties in with &lt;a href=&quot;http://lambda-the-ultimate.org/node/4349&quot;&gt;mainstream yield&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Thu, 21 Feb 2013 13:30:55 +0000</pubDate>
</item>
<item>
 <title>Tiny Transactions on Computer Science</title>
 <link>http://lambda-the-ultimate.org/node/4599</link>
 <description>&lt;blockquote &gt;&lt;p &gt;&lt;a href=&quot;http://tinytocs.org/&quot;&gt;Tiny Transactions on Computer Science&lt;/a&gt; (TinyToCS) is the premier venue for computer science research of 140 characters or less.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is an interesting idea: CS papers whose body fits in 140 characters - the abstract may be longer, watering the concept down a bit.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Mon, 10 Sep 2012 17:23:35 +0000</pubDate>
</item>
<item>
 <title>What does focusing tell us about language design?</title>
 <link>http://lambda-the-ultimate.org/node/4471</link>
 <description>&lt;p &gt;A blog post about &lt;a href=&quot;http://www.cs.bham.ac.uk/~pbl/cbpv.html&quot;&gt;Call-By-Push-Value&lt;/a&gt; by Rob Simmons: &lt;a href=&quot;http://requestforlogic.blogspot.com/2012/03/what-does-focusing-tell-us-about.html&quot;&gt;What does focusing tell us about language design?&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
I think that one of the key observations of focusing/CBPV is that programs are dealing with two different things - data and computation - and that we tend to get the most tripped up when we confuse the two.&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;Data is classified by data types (a.k.a. positive types). Data is defined by how it is constructed, and the way you use data is by pattern-matching against it.
&lt;li &gt;Computation is classified by computation types (a.k.a. negative types). Computations are defined their eliminations - that is, by how they respond to signals/messages/pokes/arguments.
&lt;/ul&gt;
&lt;p &gt;There are two things I want to talk about, and they&#039;re both recursive types: call-by-push-value has positive recursive types (which have the feel of inductive types and/or algebras and/or what we&#039;re used to as datatypes in functional languages) and negative recursive types (which have the feel of recursive, lazy records and/or &quot;codata&quot; whatever that is and/or coalgebras and/or what William Cook calls objects). Both positive and negative recursive types are treated by Paul Blain Levy in his thesis (section 5.3.2) and in the Call-By-Push Value book (section 4.2.2).&lt;/p&gt;
&lt;p &gt;In particular, I want to claim that Call-By-Push-Value and focusing suggest two fundamental features that should be, and generally aren&#039;t (at least simultaneously) in modern programming languages:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;Support for structured data with rich case analysis facilities (up to and beyond what are called views)
&lt;li &gt;Support for recursive records and negative recursive types.
&lt;/ul&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Previously on Rob&#039;s blog: &lt;a href=&quot;http://requestforlogic.blogspot.com/2011/08/embracing-and-extending-levy-language.html&quot;&gt;Embracing and extending the Levy language&lt;/a&gt;; on LtU: &lt;a href=&quot;http://lambda-the-ultimate.org/node/1975&quot;&gt;Call by push-value&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/4314&quot;&gt;Levy: a Toy Call-by-Push-Value Language&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;And let me also repeat CBPV&#039;s slogan, which is one of the finest in PL advocacy: &lt;em &gt;Once the fine structure has been exposed, why ignore it?&lt;/em&gt;&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Mon, 05 Mar 2012 15:17:25 +0000</pubDate>
</item>
<item>
 <title>Adding Delimited and Composable Control to a Production Programming Environment</title>
 <link>http://lambda-the-ultimate.org/node/4466</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.utah.edu/plt/publications/icfp07-fyff.pdf&quot;&gt;Adding Delimited and Composable Control to a Production Programming Environment&lt;/a&gt; (&lt;a href=&quot;http://www.cs.utah.edu/plt/delim-cont/&quot;&gt;add&#039;l material&lt;/a&gt;), Matthew Flatt, Gang Yu, Robert Bruce Findler, Matthias Felleisen, ICFP 2007.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Operators for delimiting control and for capturing composable continuations litter the landscape of theoretical programming language research. Numerous papers explain their advantages, how the operators explain each other (or donâ€™t), and other aspects of the operatorsâ€™ existence. Production programming languages, however, do not support these operators, partly because their relationship to existing and demonstrably useful constructsâ€”such as exceptions and dynamic bindingâ€”remains relatively unexplored. In this paper, we report on our effort of translating the theory of delimited and composable control into a viable implementation for a production system. The report shows how this effort involved a substantial design element, including work with a formal model, as well as significant practical exploration and engineering. The resulting version of PLT Scheme incorporates the expressive combination of delimited and composable control alongside dynamic-wind, dynamic binding, and exception handling. None of the additional operators subvert the intended benefits of existing control operators, so that programmers can freely mix and match control operators.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Another tour de force by the PLT folks. Does your language have &lt;a href=&quot;http://lambda-the-ultimate.org/node/4334&quot;&gt;delimited control&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1584&quot;&gt;delimited dynamic binding&lt;/a&gt;, and exceptions? It&#039;s the new gold standard, and so far only Racket and O&#039;Caml qualify (and maybe Haskell and Scala?)&lt;/p&gt;
&lt;p &gt;Racket&#039;s implementation is additionally interesting because it achieves backwards compatibility with code written using undelimited call/cc and dynamic-wind. The authors mention that a simpler solution would be possible without this compatibility - based on &lt;em &gt;control filters&lt;/em&gt; from the &lt;a href=&quot;http://lambda-the-ultimate.org/node/216&quot;&gt;Subcontinuations&lt;/a&gt; paper.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Fri, 02 Mar 2012 19:09:40 +0000</pubDate>
</item>
</channel>
</rss>
