Dotted identifiers and λ<arg>.code syntax
A single dot splits the identifier, and the dot is replaced with #%dot-separator. If an identifier is split by one or more non-consecutive dots, all the resulting identifiers, including the occurrences #%dot-separator are placed in a syntax list, starting with #%dotted-id, so that a.b.c gets transformed into (#%dotted-id a #%dot-separator b #%dot-separator c).
A leading dot (which is not followed by another dot) is allowed, and is replaced with #%dot-separator, like dots occurring in the middle of the identifier.
A dot immediately preceded or followed by an ellipsis … can be omitted, so that a.….b, a….b, a.…b and a…b are all translated to (#%dotted-id a #%dot-separator … #%dot-separator b).
Two or more dots do not split the identifier, but one of the dots is removed (i.e. it escapes the other dots).
If an identifier ends with a dot, a single trailing dot is removed and the identifier is otherwise left intact (i.e. the trailing dot escapes the whole identifier).
Identifiers consisting only of dots are left unchanged, as well as the following: ..+, ...+, ..*, ...*, …, …+, …* and ::....
syntax parameter
(#%dotted-id ids-and-separators …)
This behaviour can be altered using syntax-parameterize. I don’t think syntax parameters can be modified globally for the whole containing file like parameters can (via (param new-value)), so the exact mechanism used to customise the behaviour of #%dotted-id may change in the future.
syntax
syntax
(#%module-begin . body)
syntax
(#%top-interaction . expression)
1 Typed version of dotlambda
#lang typed/dotlambda | package: dotlambda |
syntax
(#%module-begin . body)
syntax
(#%top-interaction . expression)