Lisp, here's why the mainstream ignores you.
While I currently don't know how you write a "hello world" in LISP, I am keenly aware that the LISP language, with its powerful macro system, could be very instructive on the topic of metaprogramming....
View ArticleLoyc and Nemerle
I created this blog to be about Loyc, the Language of Your Choice project, which is about making general tools for creating and extending programming language, converting code between languages, and...
View ArticleThe Loyc tree and prefix notation in EC#
As I designed the macro system for Enhanced C#, I thought a lot about what kind of syntax tree would be appropriate--not just for EC# but for tools that could process multiple languages. One of Loyc's...
View ArticleRedesigning the Loyc tree code
The original (and current) design for the classes that represent Loyc trees has some problematic properties: You can't tell if a node is mutable or immutable without a runtime check.Green nodes are...
View ArticleStatus update: Loyc tree rewritten
I have made and implemented the changes that I planned to make to the Loyc tree. The code was rewritten from scratch; the new code is not as fancy or complete, but it's easier to use. Red nodes are...
View ArticleOnward
After much soul-searching... actually, not that much... I've decided to continue working on Loyc and EC# even though I discovered a really nice language in Nemerle. Personally, I wouldn't mind...
View ArticleD-style ranges in C# (.NET)
Ranges are the most important concept in the design of modern D collection code, and I want them to be included under the Loyc umbrella (but for now, don't worry what Loyc is.) As I wrote in an as-yet...
View ArticleLLLPG, Loyc trees, and LES, oh my!
Background: LLLPG —I normally don't let these internal "planning" posts go to CodeProject, but my planning has reached an advanced stage and I think it would be fun to hear some feedback on my new...
View ArticleThe root of all evil is optimization? Or apathy?
You've probably heard the refrain "Premature optimization is the root of all evil". Well, how did that turn out? Every Windows computer is filled with little gadgets in the system tray. Users may not...
View ArticleProtobuf-net: the unofficial manual
Protobuf-net is a fast and versatile .NET library for serialization based on Google's Protocol Buffers. It's one of those libraries that is both widely used and poorly documented, so usage information...
View ArticleExtra, extra, read all about Loyc
I recently set up a MediaWiki for Loyc's documentation. If you'd like to learn more about Loyc, go there and read The main pageThe pages on the sidebar under "basic concepts": Loyc trees, Loyc...
View ArticleExploring the Nemerle macro system
To illustrate the properties of Nemerle's macro system, I will show a list of macros, followed by a program that calls the macros. /* Macro.n */using System;using System.Linq;using...
View ArticleFormalism tutorial
Have you ever seen notation like this in a programming language paper? I have. And it's completely frustrating to encounter notation like this, because there is no obvious way to find out what it...
View ArticleLLLPG: almost done
Yesterday I published a new article about the Loyc LL(k) Parser Generator.
View ArticleMy #1 Tip for Technical Writers
There are so many docs out there that don't seem to get this. If I could offer one tip for anyone who writes technical or scientific documentation about anything, it's this: use examples. Lots of...
View ArticleLLLPG: greedy and nongreedy
LLLPG supports "greedy" and "nongreedy" loops and optional items. The "greedy" and "nongreedy" modes refer to the action you prefer to take in case of ambiguity between an exit branch and another...
View ArticleGrammars: theory vs practice
Theoretical literature is often written in a baffling mathematical form, so I decided to write this post to help people understand the theoretical representation of grammars. LLLPG does not actually...
View ArticleThe Loyc LL(k) Parser Generator: part 2
This article is Published on CodeProject. This article assumes you've read part 1. LLLPG still requires you to write your code in LES rather than C#, but LES is a little friendlier now that I've...
View ArticleBogus ambiguity warnings in LLLPG
Sometimes LLLPG gives me a warning that I just can't fathom. I'm currently writing the parser for Enhanced C#, and I got a very puzzling warning: using TT = TokenType;partial class EcsParser...
View ArticleUsing Loyc.Essentials: introduction
Loyc.Essentials is a library (DLL) of general-purpose code that supplements the .NET BCL (standard libraries). I hope that one day it will serve as a starting point or inspiration for a multi-language...
View ArticleUsing Loyc.Essentials: collection interfaces
Loyc.Essentials is a library of "stuff that should be in the .NET BCL, but isn't." Today I will present one of the most important parts of Loyc.Essentials: its collection interfaces. Programmers with...
View Article# in operator names to be removed
Originally I decided that in Loyc trees, '#' would be a prefix that meant "special" or "keyword". So reserved words or language constructs would be represented as identifiers that start with '#', e.g....
View ArticleOpen Letter to ???
I have a letter I would like to send to relevant leaders at Google and Mozilla, but I'm not sure to whom I send it. I did send it to Javascript inventor and Mozilla CEO Brendan Eich--just before he...
View Article2D Convex hull in C#: 40 lines of code
If you want a convex hull and you want it now, you could go get a library like MIConvexHull. That library claims to be high-performance compared to a comparable C++ library, but that claim is...
View ArticleMoving to GitHub
I have moved my blog to GitHub! The main reason for this is that blogspot has always had a lousy and buggy editor, which forces me to type all posts in HTML; on GitHub I can use markdown instead. Plus,...
View Article
More Pages to Explore .....