HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mcinglis
macrofun
C2014–2014
mcinglis / macrofun · Archived

macrofun

Standards-defying functional-programming macros for the C preprocessor

2Distinct people
3Mentions
0Explicit recommenders
52GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Standards-defying functional-programming macros for the C preprocessor

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day3 dated mentions

Observed mentions: 2014-05-20 09:05:20 UTC to 2014-06-12 22:43:16 UTC.

012014-05-20 00:00:00 UTC to 2014-05-21 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsMay 202014-05-21 00:00:00 UTC to 2014-05-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-22 00:00:00 UTC to 2014-05-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-23 00:00:00 UTC to 2014-05-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-24 00:00:00 UTC to 2014-05-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-25 00:00:00 UTC to 2014-05-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-26 00:00:00 UTC to 2014-05-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-27 00:00:00 UTC to 2014-05-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-28 00:00:00 UTC to 2014-05-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-29 00:00:00 UTC to 2014-05-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-30 00:00:00 UTC to 2014-05-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-05-31 00:00:00 UTC to 2014-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMay 312014-06-01 00:00:00 UTC to 2014-06-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-02 00:00:00 UTC to 2014-06-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-03 00:00:00 UTC to 2014-06-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-04 00:00:00 UTC to 2014-06-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-05 00:00:00 UTC to 2014-06-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-06 00:00:00 UTC to 2014-06-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-07 00:00:00 UTC to 2014-06-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-08 00:00:00 UTC to 2014-06-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-09 00:00:00 UTC to 2014-06-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-10 00:00:00 UTC to 2014-06-11 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2014-06-11 00:00:00 UTC to 2014-06-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2014-06-12 00:00:00 UTC to 2014-06-13 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJun 12

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
May 202014-05-20 00:00:00 UTC2014-05-21 00:00:00 UTC110
May 212014-05-21 00:00:00 UTC2014-05-22 00:00:00 UTC000
May 222014-05-22 00:00:00 UTC2014-05-23 00:00:00 UTC000
May 232014-05-23 00:00:00 UTC2014-05-24 00:00:00 UTC000
May 242014-05-24 00:00:00 UTC2014-05-25 00:00:00 UTC000
May 252014-05-25 00:00:00 UTC2014-05-26 00:00:00 UTC000
May 262014-05-26 00:00:00 UTC2014-05-27 00:00:00 UTC000
May 272014-05-27 00:00:00 UTC2014-05-28 00:00:00 UTC000
May 282014-05-28 00:00:00 UTC2014-05-29 00:00:00 UTC000
May 292014-05-29 00:00:00 UTC2014-05-30 00:00:00 UTC000
May 302014-05-30 00:00:00 UTC2014-05-31 00:00:00 UTC000
May 312014-05-31 00:00:00 UTC2014-06-01 00:00:00 UTC000
Jun 12014-06-01 00:00:00 UTC2014-06-02 00:00:00 UTC000
Jun 22014-06-02 00:00:00 UTC2014-06-03 00:00:00 UTC000
Jun 32014-06-03 00:00:00 UTC2014-06-04 00:00:00 UTC000
Jun 42014-06-04 00:00:00 UTC2014-06-05 00:00:00 UTC000
Jun 52014-06-05 00:00:00 UTC2014-06-06 00:00:00 UTC000
Jun 62014-06-06 00:00:00 UTC2014-06-07 00:00:00 UTC000
Jun 72014-06-07 00:00:00 UTC2014-06-08 00:00:00 UTC000
Jun 82014-06-08 00:00:00 UTC2014-06-09 00:00:00 UTC000
Jun 92014-06-09 00:00:00 UTC2014-06-10 00:00:00 UTC000
Jun 102014-06-10 00:00:00 UTC2014-06-11 00:00:00 UTC101
Jun 112014-06-11 00:00:00 UTC2014-06-12 00:00:00 UTC000
Jun 122014-06-12 00:00:00 UTC2014-06-13 00:00:00 UTC101

What Hacker News says

3 sources
I wrote this large reply to a sibling comment on the whole practicality argument against copyleft licenses: https://news.ycombinator.com/item?id=7886353 The popularity of a project, derived or not, is not relevant. By that measure, FreeBSD is running on 10% of desktop computers, and it's better off because of that? I don't think so. FreeBSD has its merits, and I think it's a cool project, but the popularity of its derivations has nothing to do with its quality. I can understand the legal-freedom angle of non-copyleft. I really can. I released Macrofun [0] under the MIT license, because it's not actually useful, and so I didn't care what people did with it. I later released a similar, useful project, Libpp [1], under the AGPL. I think we just differ on ideology. Like I said, I believe that nonfree software is harmful [2], so I don't want t
Read the rest
o contribute to it at all. When I want to release a body of code as free software, but not have that code be used to develop nonfree software (nor DRM, nor patent abuse, ...), legal complexity has to come into the picture. The MIT and BSD licenses are really simple, and I get that appeal. I long for an AGPL-like license that doesn't run over 600 lines. Thankfully, the GNU project has a lot of documentation of its licenses, so the most common questions are already answered. I think the GPL licenses are only problems for people (or employees) who - implicitly or explicitly - are trying to avoid contributing to free software. I care little for their convenience. [0]: https://github.com/mcinglis/macrofun [1]: https://github.com/mcinglis/libpp [2]: http://minglis.id.au/blog/2014/04/09/free-software-free-soci...
In LibreDWG drama: the end or the new beginning? (2012)
I released Macrofun [0] a few weeks ago, which provides similar macros, but does not conform to standards. A commenter on my submission to /r/programming [1] pointed out the related `P99_FOR` macro of P99 [2], which handles "variable" number of arguments while conforming to standards. Libpp's macros are implemented in a fashion similar to `P99_FOR`, but I think it's much cleaner. For example, `P99_FOR`'s handler macros are defined within a 10,000 line header file [3], and `P00_FOR_50` calls `P00_FOR_49`, so you're going to require as many preprocessor evaluations as arguments given. By contrast, `PP_MAP` is defined within a 300-line header file, and `PP_MAP_50` evaluates directly to the desired expression. You can also change the argument limit of Libpp's macros to your liking, as detailed in the readme. Libpp isn't as powerful or general
Read the rest
as P99, but I'm finding it much easier to use. Perhaps that's just because I wrote it, though. Feedback would be really appreciated. [0]: https://github.com/mcinglis/macrofun [1]: https://pay.reddit.com/r/programming/comments/260cb6/macrofu... [2]: http://p99.gforge.inria.fr/p99-html/group__preprocessor__for... [3]: http://p99.gforge.inria.fr/p99-html/p99__generated_8h_source... I've answered some questions about Libpp on /r/programming and /r/c_programming: https://pay.reddit.com/r/programming/comments/27rutk/libpp_s... https://pay.reddit.com/r/C_Programming/comments/27ru43/libpp...
In Show HN: Libpp – functional programming macros for the C preprocessor

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.