[HN Gopher] A Racket alternative to HTML Tidy
       ___________________________________________________________________
        
       A Racket alternative to HTML Tidy
        
       Author : velcrovan
       Score  : 26 points
       Date   : 2025-01-10 16:02 UTC (2 days ago)
        
 (HTM) web link (joeldueck.com)
 (TXT) w3m dump (joeldueck.com)
        
       | behnamoh wrote:
       | I like Racket. I don't like Racket's excessive use of symbols: (
       | [ #:word? word->anotherWord ...
       | 
       | Same goes for Haskell
       | (https://tech.fpcomplete.com/haskell/tutorial/operators/).
        
         | neilv wrote:
         | I kinda agree.
         | 
         | The `#:foo` syntax is something that Racket did when it
         | introduced keywords values, to support keyword arguments. So,
         | you'd write:                   (myfunc x y #:foo 42)
         | 
         | when in some other languages you'd write one of:
         | myfunc(x, y, foo=42)              myfunc(x, y, foo: 42)
         | 
         | Personally, I argued for the `#:` to be `:`, like in some other
         | Lisps:                   (myfunc x y :foo 42)
         | 
         | Regarding `->`, it's an ancient Scheme naming convention for
         | identifiers, meaning transform one thing to another, which
         | looks a little ugly, but not a totally bad idea. So you'd have:
         | (number->string 42)
         | 
         | rather than `numberToString(42)` or any of the other gazillion
         | function names, methods, special syntax, idioms, or flying leap
         | type coercion used in other languages.
         | 
         | Scheme also has a few other conventions, including suffixing an
         | identifier with a `?` to denote a predicate on a value, such
         | as:                   (positive? 42)
         | 
         | compared to, say, `isPositive(42)`.
         | 
         | The Racket professors added their own conventions in code they
         | write, including making `[` syntactically equivalent to `(`,
         | and then having a convention of when to use bracket vs.
         | parentheses.
         | 
         | I actually privately made my own Racket `#lang` that permitted
         | colon-keywords, and removed the square-bracket equivalence.
         | There shall be no pound-colon-keyword, and I expect there's
         | better uses for square brackets, such as for an heavy use
         | object method/message syntax without having your code full of
         | `send`. For example, instead of Racket's own object system
         | syntax:                   (send myobj mymethodid x y)
         | 
         | you might have:                   [mymethodid myobj x y]
         | 
         | or:                   [myobj mymethodid x y]
         | 
         | Or some other use in various PL research uses of Racket, where
         | you have a language that starts as Scheme, and adds some other
         | semantics for which you don't want special keywords throughout
         | the code. Unused ASCII symbol characters are precious.
        
       ___________________________________________________________________
       (page generated 2025-01-12 23:01 UTC)