Unless specified otherwise, all the code and the documentation on this
site is in public domain.
Programming Languages
Scheme,
Haskell,
Prolog,
ML,
C/C++,
Perl,
typed DSL,
Other...
|
Scheme
XML, Web, macros, text and binary parsing, utilities,
database interfaces, papers...
|
XML
SXML, SSAX, parsing, SXSLT, SXPath, typed SXML...
|
OOP
Critique,
Purely-functional,
as-a database...
|
Lambda-calculus
Calculators, Negation, Division, P-numerals, Puzzles...
|
Haskell
Logical type programming, dependent types, keyword arguments, HList,
stanamic properties, monads, regions...
|
Algorithms and Data Structures
Trees, Cryptography,
Treap,
Scheduling, Zipping,
Arithmetic compression,
Cyclical structures...
|
Numerical Math
LinAlg, SVD, FFT, Lazy matrices, Matrix Streams, code generation...
|
Computation
Functional Programming, Monads,
Types,
Dependent Types,
backtracking,
Fixpoints, Self-Referential values, Re-writing systems, CPS macros...
|
Continuations
shift/reset in CBV and CBN; control/prompt;
call/cc and fixpoints;
enumerators and generators; zipper
...
|
Metcast
Introduction,
Channels,
Request language,
Soutei...
|
Image Processing
VR,
Wavelets,
Zerotrees,
Lazy images...
|
Essays
Information and Entropy, Computers and Infinity,
conference summaries,
Principia Mathematica notes...
|
OS
ZipperFS/OS, HTTP VFS, Layered I/O, Sh agents,
DreamOS,
Speaking
HTTP...
|
Meta-programming
Staging, typed compilation, generating Gaussian Eliminators,
FFT, numeric code...
|
Meta-theory
Logical Frameworks, Twelf, type soundness proofs for calculi with
delimited control,...
|
| Algorithms and Data Structures |
|---|
|
Solving a text layout problem with Dynamic Programming
Secure Counting of members
of a subset without revealing their identities
Provably perfect random
shuffling and its pure functional implementations
Pure-functional transformations of cyclic graphs and the Credit Card Transform
Radix-2 Fast
Fourier Transform: generating optimal code
Practical Lambda-calculators, which implement a
normal-order evaluation as a bottom-up parsing
Accumulating tree traversals, a better tree fold, and XML parsing
The probability of randomly chosen integers being relatively prime
Representing knowledge about knowledge
Total stream processors
and their applications to all infinite streams
|
Treap, a sorted dictionary data structure based on randomized search trees, in Scheme
Flattening a (cyclic) list by a lazy virus
Recursively enumerating
binary arithmetic relations, from addition to logarithm -- as conjunctions
and disjunctions -- in Prolog and Kanren
Towards the best collection traversal interface: from enumerator
to cursor
Provably correct and practical intersection testing of two
segments of a circle or two georectangles
On parent pointers in SXML trees
Polymorphic stanamically balanced AVL trees
Selecting a random node from a tree in one pass: from proof to code
Zipper as a delimited
continuation. Updating immutable SXML documents side-by-side.
Polymorphic variants as
negation of open records: solving the expression problem
Annotating trees post factum
|
| Programming Languages |
|---|
|
XML and Scheme: parsing, querying,
authoring, transforming
C++ Digest
Functional Style in C++: Closures, Late Binding, and Lambda Abstractions
Why C++ is not very fit for GUI programming
Scheme code, utilities, articles, Web and database programming
Purely-functional Object-Oriented System in Scheme
Makefile as a
functional language program
Object-Oriented programming is a
harmful methodology
KANREN: a declarative logic programming system
embedded in Scheme
Type-level typecase
|
HANSEI:
Embedded domain-specific language for probabilistic models
and (nested) inference
HTML/XML/LaTeX authoring in Scheme
and Haskell
Scheme in Perl, or Perl as
Scheme
Literate XML/DTD programming
C pointers as closures
Keyword arguments in Haskell,
Scheme macros, ...
Eliminating Array
Bound Checking through Non-dependent types and proving it
Symbolic differentiation of compiled numeric functions
Representing existential data types with isomorphic simple types
Weather Observation Markup Format, an application of XML to annotate weather observation reports
|
| Networking and Communication |
|---|
|
Handling multiple TCP Connections in C++, C/C++ Users Journal, v.14, No. 5, May 1996, pp. 17-23.
The Web as a computer itself
TCPStream -- a C++ standard iostream over a TCP channel
Persistent
delimited continuations for CGI programming with nested
transactions
|
Distributing Data Using TLT30G, Dr. Dobb's Journal, #289, September 1998, pp.34-40, 92-93.
Remote "command prompt" (pseudo-telnet) over HTTP
Speaking HTTP: A File-Uploader Tool,
USENIX ;login: -- vol. 25, No. 2 -- April 2000, pp. 6-14.
|
| Computing and Computation |
|---|
|
Expressing formal proofs in a computer language: Y Scheme
The Web as a computer itself
Many faces of
the fixed-point combinator
Type Arithmetic,
type-level higher-order for-loops, with
applications to safe pointer arithmetic and time-indexed
computations
Compilation by evaluation as syntax-semantics interface in natural languages
How fundamental is
information?.
Lexical extensions
via macros, and the meaning of identifiers
Syntax-rule-level lambda, CPS,
and a systematic macro programming
(Delimited) dynamic binding
Interpreting types as
abstract values: a brief course on Hindley-Milner type inference
|
Backtracking, indeterministic,
state, etc. Monads in Haskell and Scheme
UNIX pipes as IO monads. Monadic i/o and UNIX shell programming
Sendmail as a
Turing machine
Concurrent and serializable computations and the evaluation order
Universally polymorphic
lists and a polymorphic FOLD in ANSI C without casts
P-numerals: arithmetically more convenient and efficient lambda-numerals
CPS transform and
beta-normalization via syntax-rules: Macro-expander as a proof assistant
Inverse
typechecking and theorem proving in intuitionistic and classical
logics
|
| Operating Systems |
|---|
|
Zipper-based
file server/OS
Streams and Iteratees:
Incremental multi-level input processing
A network file system over HTTP:
remote access and modification of files and files
A USENIX'99 Freenix track paper
Patch-free User-level Link-time
intercepting of system calls and interposing on library functions
|
Opening of extended file names
including bidirectional and TCP pipes
Kernel of a simple OS in C++
Relaying TCP packets
Writing agents in sh: conversing through a pipe
Delimited continuations in operating systems
|
| Image Processing and Visualization |
|---|
|
Flight through/around clouds (a.k.a. Venus)
|
Grayscale Image Processing
Image Compression Papers
|