sayyadirfanali
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.
Poor Man's Time Machine: Lazy Evaluation in JavaScript and Haskell
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.
No Let, No Rec, No Problem: A Gentler Introduction to the Y and Z Combinators
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.
i've not been faithful to the original design of Source Code Pro or even Fira Mono or Ubuntu Mono (from which i also derived a lot) but do try to stick to a simple geometrical ideal with only a few exceptions.
what would be ideal is a variable-width font which covers most Unicode characters consistently. some Unicode characters (eg, arrow) would need space of 2 characters and so on. making it elegant would require quite a lot of work to ensure Unicode does't look out of place (eg, arrow in your comment).
these are the problems which make me feel full Unicode editing is difficult to achieve in the short run. not to mention the obvious issue of typing Unicode characters from the ASCII keyboard.
i've included a reasonable subset of Unicode in Myna but it may not look very good. don't get me wrong, i appreciate the Unicode advocacy. but until we've something good-looking and well-behaving tooling on that side, using it would be quite frustrating.
i didn't know about Go Mono. it looks alright but monospace serifs are probably not for me.
about the alignment, i think the README might give an impression that it's solely about vertical alignment, but it's more about uniform flow of characters along with some resemblance with an actual symbol (which we can not have in ASCII).
for example, take the `<-` combination. i think you're correctly pointing out that in most fonts they are indeed vertical-aligned properly. but there are other details (horizontal alignment, angle between strokes, weights, etc) which i found missing. in most monospace fonts, these less-than and more-than signs are not designed with the view that their most common usage is indeed not checking for inequality but for bitwise operators and struct pointer dereferencing (C), function declaration and monadic/applicative/functorial programming (Haskell), shell redirection (bash), function composition (OCaml, Elixir), tags (HTML), and countless others. if you think about it that way, it makes sense to not make the angle between strokes too small. many monospace fonts do it because they respect classical typographic conventions regarding space and design. the same goes for the designs for backquote, tilde, comma, colon. in most monospace fonts, backquote is so small it's barely visible and tilde looks too much like the hyphen, etc.
Myna is my attempt to break some of these conventions to make things look a little bit even for programmers.