_piud
Joined 1 year ago
Joined 1 year ago
in the article, i define recursion narrowly as "... call the function `fact` from inside the definition of the function `fact`".
you're right that `factgen` is also not recursive but it is also rejected, but for a different reason: self-reference. declarations are banned precisely because they give a function a "name" that can be referenced later.
please note that the solution which uses Z combinator (given at the end) grows from `(x => x(x))(x => x(x))`, which is NOT self-referential. it achieves self-replication by literally rewriting the content of the function twice, which is different from self-referential recursion of `factgen`.
hope that clears some of the confusion.
as is expected, all codes in the illustrations, especially the C code, are to be judged superficially, ie, by their covers, not content :)
i didn't produce a variant for the `l` serif, please check issue #8. if you prefer the variant, please open an issue. can you elaborate on the kerning point, preferably there also?
the inequalities would probably be more common than bitwise/pointer usage in C, most because of for loops, i guess.
but if you consider all the other languages i listed, it is obviously not the case, especially in Haskell and even HTML.
now i have also added a comparison table of Myna with many popular monospace fonts (if that could help gauge the utility).
i understand that there would be many many folks who would find this font ugly and unusable. it is largely a matter of personal preference.
if you want to use it but em-dash is the only deal-breaker, please try it once and raise a feature request. i'd see what we can change to make it work.
Shouldn't a structure-preserving map send open sets to open sets (open map) instead?
Most texts warn us not to confuse the two, throw a couple of counterexamples, and move on.
Here is an essay building an intuition for why this definition works the way it does and why "pushing forward" fails while "pulling back" works to ensure continuity.