Comments (6)
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.
I will look into this and give a proper fix later, I don't expect it should be too complicated
from janet.
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.
@sogaiu Run the first code snippet on this page.
from janet.
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.
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)
- Proposal: Terse Chained Indices HOT 19
- Reimplement `slurp` with `os/open`. HOT 28
- A way to read standard input in the background without `file/read` in a thread. HOT 4
- `each` macro improper behavior? HOT 8
- `if-let` breaks tail call optimization. HOT 6
- false branch of `if-let` doesn't report the correct call stack information. HOT 4
- `ev/select` should not resume a dead task. HOT 4
- `try` and `defer` break tail call optimization. HOT 4
- `(= @"update" @"update")` is `false`. HOT 3
- `ev/select` still revives fibers.... HOT 2
- option to unbundle docstrings and potential consequences HOT 8
- splicing into structs/tables HOT 2
- Disasm/asm doesn't round-trip for function with unused argument HOT 1
- eventloop/networking gets stuck on musl HOT 11
- Consider making `module/paths` a dynamic variable HOT 6
- Can it run on iOS? Thank you. HOT 3
- `os/strftime` doesn't respect environment variables. HOT 3
- Re-integrate jpm into janet HOT 43
- recent change kinda breaks lexical scope with multiple modules HOT 2
- How to switch off spork/sh/copy message? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from janet.