Comments (6)
Thank you for the report. Maybe we will need to keep a mapping in the evaluator to know how to handle those. I also can't think of alternatives. :(
from livebook.
Perhaps instead of keeping a list of bindings by name only, you could keep them with their original name and a tag suggesting an origin, which can be converted when necessary.
An example, in Erlang terms, would be:
Bindings = [{erlang, Name}, ...].
to_erlang_var({erlang, Name}) -> Name;
to_erlang_var({elixir, Name}) -> to_camel_case(Name).
from livebook.
Good catch. There is more to it, the current conversion maps JsON
and JsOn
to the same Elixir name, so if both names were to be defined it can actually break the semantics.
I think we really need an unambiguous mapping. My vote is to convert JSON
to j_s_o_n
, this is not pretty, but only matters if the user writes both Erlang and Elixir. Besides, one may argue the variable should be Json
anyway :) @josevalim wdyt?
from livebook.
I think we don’t need to worry about multiple Elixir vars converting to the same Erlang one, that’s fine. Just change your Elixir var name. But Erlang vars should go back and forth without issues.
from livebook.
Just change your Elixir var name.
Ideally we should not have conflicts in the conversion, I think that's confusing.
My point is that with an unambiguous mapping we achieve both and it seems like the simplest approach.
There are a couple more cases, because technically Erlang env vars can also have underscores. But I think the following would be unambiguous (same procedure both ways):
- Toggle the first char case
_x <-> X
And this results in:
Erlang <-> Elixir
# Usual
Json <-> json
JSON <-> j_s_o_n
JsOn <-> js_on
JsON <-> js_o_n
# Mostly irrelevant edge cases
J_s_o_n <-> jSON
Js__on <-> js_On
Js__o_n <-> js_ON
JsO_N <-> js_oN
Js_on <-> jsOn
from livebook.
regardless of what I said, that’s by far the simplest option, so I agree. :)
from livebook.
Related Issues (20)
- `nil` autosave location causes option to be missing from HTML on Settings and notebooks are not saved. HOT 4
- Problem with `lb:*` cookies HOT 2
- ImageComponent crashes livebook if passed non-binary `contents` HOT 1
- Race condition on smart cell evaluation HOT 1
- Store app password in stamp encrypted data HOT 4
- Crash on Windows when trying to save file if a nearby filename contains an emoji HOT 3
- Livebook not working on window 10 HOT 2
- Livebook cannot connect to the default runtime HOT 20
- Deployed apps don't reevaluate cells marked as 'Reevaluates automatically' HOT 6
- Support epmdless runtimes HOT 1
- Cannot drop files on Safari
- Add two options to xlsx_reader? One to skip empty sheets and another to nillify expect_chars? HOT 4
- Revisit teleport integration
- Node terminated unexpectedly HOT 14
- Fix asset cache URL on distributed deployments
- mix escript.install hex livebook (cannot run livebook after) HOT 3
- Request to Acknowledge Uffizzi's Contributions in README HOT 5
- Livebook will not open; due to error during startup HOT 3
- Support Fly for zero-trust authentication HOT 1
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 livebook.