Comments (2)
Thanks for always providing such elaborate and thoughtful answers!
I had entirely forgotten about let-operators pretty much solving this completely! Personally, I can see how it makes sense to wait, that considered.
from promise.
It's feasible to do, but I'd be concerned about increasing bundle size on the JS side, for a feature that isn't a "primary" concern for JS-only work. For now, I added a PipeFirst
module (you may have already seen it). To write code that works on both native and JS with it, you can do:
promise/test/native/test_ffi.re
Line 8 in 6b9ff51
On JS, the module is empty, because we want to forward to BuckleScript's operator:
Lines 230 to 231 in 6b9ff51
On native, the module defines the operator for unary functions (it's the desugared syntax, but ->
maps to it):
promise/src/native/promise.rei
Lines 222 to 224 in 6b9ff51
This is good enough for most uses, which are partially-applied binary functions from Promise
.
Obviously, using ->
a lot on mostly-native code is going to stick out. I don't know yet what to do about that :/ I figured this library's main contribution is to JS, rather than to native, so it's best to follow BuckleScript conventions.
Note that the pipe operators might become less important over time, as people switch more and more conclusively to OCaml 4.08+ on the native side, and BuckleScript releases a Reason with let*
support. Then, let*
syntax might replace many uses of the pipe operator with promise functions (#52).
from promise.
Related Issues (20)
- Promise.allOk and its variations HOT 6
- Add `Promise.both` HOT 2
- BuckleScript 8.0.0 breaks listToArray / Promise.all HOT 5
- Reduce compiled size again HOT 4
- Format with refmt? HOT 2
- About the deprecation of the infix operators HOT 2
- Promise.allOkArray never resolves if input is an empty array HOT 1
- Tests: remainsPending appears not to be working
- Converting from Js.Promise HOT 3
- Convert tests to OCaml syntax
- Add a js_of_ocaml variant
- Try an internal module with double underscores to hide "rejectable" from error messages
- Exceptions cause resolution with `undefined` HOT 8
- Provide type abbreviation for promises that reject with Js.Promise.error
- Convert README snippets to ReScript syntax
- Convert to ReScript syntax once there is enough adoption HOT 10
- tap on a rejected promise triggers unhandled promise rejection HOT 3
- Native Example HOT 4
- Example for reason syntax with letop
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 promise.