Metamorphic programming is an approach to extend the structured recursive programming discipline, which favors the use of fold operations over general recursion, to abstract data types. The key idea is to represent an ADT by two parts, a constructorand a destructor,which are essentially functions to/from a common representation. Then a fold can work on an ADT by applying parameter functions to values that are delivered by the ADT's own destructor. Fold operations that use as a parameter the constructor of another ADT, called ADT transformers,play an important role and offer a concise programming style. Several laws for ADT folds and transformers exist that can be used for program optimization and verification.
GHC now (as of early Jan 2006) interprets source files as UTF-8. In -fglasgow-exts mode the above special symbols are interpreted as in JHC. GHC knows about the characters classifications of all unicode characters via the Data.Char library, and can therefore understand identifiers written using alphanumeric characters from any language (but see below for note about caseless character sets).
Jack W. Crenshaw wrote the Let's Build a Compiler article series from 1988 - 1995. This document is a formatted version of that excellent non-technical introduction to compiler construction. These web pages were created in 2005, and port Mr. Crenshaw's original Pascal code for the 68000 under SK*OS to the Forth language on a 80x86 CPU, under Windows XP. The text files were downloaded from http://compilers.iecc.com/crenshaw/. They are highly recommended. In this transcript I have assumed a 32-bit, byte-addressing Forth, with 8-bit characters. Division is symmetric, not floored, and two's complement is assumed throughout. iForth works splendidly for it, but other Forths can do it too.
Source Code Library is a powerful multi-language source code Library and clipboard extender with the following benefits: * Built-in library with 50,000++ lines of code * Fully support more than 30 programming languages * Manage your source code in a single, Secure place * Password protection & strong 448 bits encryption (optional) * Full integration with *all* major programming IDEs * Boost your productivity with its powerful clipboard extender and AutoText utility
mini languages which demonstrate various techniques in design and implementation of programming languages. The languages are implemented in Objective Caml. I teach Theory of Programming Languages at University of Ljubljana. For the course I implemented languages which demonstrate basic concepts such as parsing, type checking, type inference, dynamic types, evaluation strategies, and compilation. They are deliberately very simple, as each language introduces only one or two new basic ideas. You should find the source code useful if you want to learn how things are done. calc, miniml, boa, levy
K4 by EXAMPLE K4 is product of Kx Inc. http://kx.com 2006.02.23. 22:15 Attila Vrabecz (VrAbi) http://vrabi.web.elte.hu/k based on J by EXAMPLE by 06/11/2005 (C) Oleg Kobchenko http://olegykj.sourceforge.net
MobWrite converts forms and web applications into collaborative environments. Create a simple single-user system, add one line of JavaScript, and instantly get a collaborative system. Demos Each of these demos is globally collaborative, meaning everyone is sharing the same space. With luck there will be someone else using these demos with whom you can play. If not, open the demos in two different windows and collaborate with yourself. Editor A simple collaborative plain-text editor. MobWrite is extremely good at resolving collisions which other systems would fail on. Form This form demonstrates collaboration with all the standard HTML form elements. Note that the onchange event is called remotely when the checkbox is ticked, thus allowing forms to react normally to changes. Spreadsheet This 50-cell spreadsheet is an abuse of MobWrite (there are more efficient ways of synchronizing grids of data). But it shows what can be done.
Installation of package Work with git.el Customization The git-emacs package Installation and customisation Work with existing repository Creation of new repositories Work with changes History of changes Work with tags & branches The magit package Installation and customisation Basics of work with package Work with changes Work with history of changes Tags, branches, and remote repositories The egg package Auxiliary packages git-blame gitsum egit We can work with Git using several packages — either use modules for VC и DVC packages, or use packages git.el, emacs-git, magit & egg packages. In first case we work with Git through standard interfaces of VC & DVC.
One of those things I have to do fairly often in multithreaded programming is send off a whole bunch of threads to do their thing while I do something else on the main thread until they’re done. For example, imagine you’re downloading a bunch of images from the web, you don’t want to call httpGet one image right after another, because network resources are slow and processing them takes up almost no CPU time. But on the other hand, forkIO doesn’t return anything, so a thread thunk will have to put its contents somewhere you can access them later. Thus, my short, simple solution, far too small to bother putting up on Hackage: module Control.Concurrent.Future where import Control.Concurrent future :: IO a -> IO (MVar a) future thunk = do ref <- newEmptyMVar forkIO $ thunk >>= putMVar ref return ref forceAll :: [MVar a] -> IO [a] forceAll = mapM takeMVar
This is a hack that makes your machine appear (to unix traceroute) to be anywhere on the internet. Specifically, you can define a route to append to the real route that any arbitrary host on the internet would see.