Giter Site home page Giter Site logo

(default) not working about janet HOT 6 CLOSED

iacore avatar iacore commented on May 24, 2024
(default) not working

from janet.

Comments (6)

bakpakin avatar bakpakin commented on May 24, 2024 1

Git bisect found:

Author: primo-ppcg <[email protected]>
Date:   Wed Aug 23 16:01:16 2023 +0700

    Optimize nil conditions for while and if

 src/core/specials.c | 74 +++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 52 insertions(+), 22 deletions(-)

from janet.

bakpakin avatar bakpakin commented on May 24, 2024 1

I will look into this and give a proper fix later, I don't expect it should be too complicated

from janet.

sogaiu avatar sogaiu commented on May 24, 2024

I don't understand (^^;

Some of the output for (doc default) here is:

    (default sym val)

    Define a default value for an optional argument. Expands to `(def 
    sym (if (= nil sym) val sym))`.

That suggests to me that default is supposed to make sense in the context of where "optional argument" makes sense, e.g.:

$ janet
Janet 1.32.1-1ccd544b linux/x64/gcc - '(doc)' for help
repl:1:> (defn test [&opt x] (default x "B") x)
<function test>
repl:2:> (test "A")
"A"
repl:3:> (test)
"B"

That looks like it's working to me, so may be I'm missing a case where it doesn't work.

Please help me understand what the issue is.

from janet.

iacore avatar iacore commented on May 24, 2024

@sogaiu Run the first code snippet on this page.

from janet.

sogaiu avatar sogaiu commented on May 24, 2024

The first code snippet in the page does not appear to be in the context of a function definition.

The documentation explicitly mentions optional argument:

Define a default value for an optional argument.

I take that to mean there must be a surrounding defintion of some callable (e.g. function or macro).

from janet.

sogaiu avatar sogaiu commented on May 24, 2024

Ok, I think I get it now.

$ janet
Janet 1.32.1-1ccd544b linux/x64/gcc - '(doc)' for help
repl:1:> (def x "A")
"A"
repl:2:> (def x (if (= nil x) "B" x))
"B"

I confused myself by thinking that the problem was with default (^^;

from janet.

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.