Code Monkey home page Code Monkey logo

Comments (2)

quexxon avatar quexxon commented on July 17, 2024 3

Is there an intentional reason that &keys has been omitted from the function documentation? If not, I'm happy to put together a PR for review - assuming that I understand the feature correctly. My understanding:

# Any arguments following the function's required arguments are
# gathered into a struct and bound to the symbol following &keys.
((fn [&keys k] k)) # => {}
((fn [x y z &keys k] k) 1 2 3 :x 1 :y 2 :z 3) # => {:x 1 :y 2 :z 3}

# This combination of &keys and a symbol must be the last entry in the parameter tuple.
(fn [&keys k x]) # => compile error: &keys in unexpected location

# The compiler will not allow the simultaneous use of & and &keys.
(fn [& &keys k]) # => compile error: & in unexpected location

# The compiler will allow &opt to precede &keys, but in doing so all
# optional parameters become non-optional.
((fn [&opt o &keys k] [o k]) :x 1 :y 2) # => [:x {1 :y}]
((fn [&opt o &keys k] [o k]) 'shrug :x 1 :y 2) # => [shrug {:x 1 :y 2}]

# If any of the keyword arguments contain duplicate keys, the first
# occurrence of the key is used.
((fn [&keys k] k) :x 1 :x 2 :x 3) # => {:x 1}

# Example usage
(defn greet
  [name &keys {:greeting greeting}]
  (let [greeting (or greeting "Hello")]
    (print greeting ", " name "!")))

(greet "Janet") # => prints: Hello, Janet!
(greet "Janet" :greeting "Good morning") # => prints: Good morning, Janet!

from janet-lang.org.

bakpakin avatar bakpakin commented on July 17, 2024

No reason, just it was added after the original documentation was written. Please do!

from janet-lang.org.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.