Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Racket does too.

    (when (0 . < . x)
         (displayln "positive"))
Although in Racket you could also add your own syntax.


Infix operator in R:

  > '%mult%' <- function(a,b) a*b
  > 3 %mult% 5
  [1] 15
Using infix operators as functions:

  > '*'(3,5)
  [1] 15


I just assumed Racket supports curly infix notation, but looking just now I see that you need to use the infix pragma and wrap things with @{}

I liked GNU Guile for the fact that it's enabled by default, thus the following is a bit more readable in my opinion

    (when { 0 < x }
      (diplay "positive") (newline))


FWIW a user can add this syntax himself to a language if he needs to.

A hypothetical `curly-infix` language could be used like this:

    #lang curly-infix racket
    (define (fact n) (if (= n 0) 1 {n * fact(n-1)}))
The reader for `curly-infix` can use a read-table to alter how `{<infix-expression>}` is read. The result can the be passed to the language after the `#lang curly-infix` which in the example is just `racket`, but could be something else.

Hmmm. Maybe I should make a `curly-infix` wrapping `infix` from my `infix` package.


I've always wondered why that was added. It feels to me against the idiom (argot?) of any lisp. It's not composable either.

    (0 . < . x . < . 12)    
    read-syntax: illegal use of `.`    
Typing those extra '.'s gets annoying very quickly too.


My guess is Racket/PLT scheme's history as a language for teaching programming to students.

Racket has some other things that are non-lispy. Support for alternate (maybe non-SEXP) syntax readers and for loops come to mind.

At least it's all simple. Sometimes terrifyingly simple, but simple.

They're useful too. Non-SEXP reader could be used to create a non-infix dialect of Racket. Loop macros like for/or can be used as a more ergonomic way than recursive functions to walk a list to find/transform one of its elements.


It was an experiment - I think the general consensus is that it was a bad idea.

The double dot notation is mostly used for inequalites:

    (x . < . 3)            instead of  (< x 3)
and for function contracts:

    (any . -> . boolean?)  instead of  (-> any boolean?)


MacLisp had an extended dot notation similar to this for hunks:

https://www.maclisp.info/pitmanual/hunks.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: