-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add paper draft #148
base: master
Are you sure you want to change the base?
add paper draft #148
Conversation
For category-theoretic ones, maybe you can start from https://arxiv.org/abs/1809.00738 (I just have the link since it's linked from Keno's note) I tried to look for more software/practice-oriented papers but it was hard to find. Maybe you already know but something from |
paper/paper.md
Outdated
The analogous operation in the immutable case is to create a copy of `spaceship`, | ||
with just the captains name changed to "Julia". This operation is sometimtes called functional update. | ||
Just think for a moment, how would you do achieve this? | ||
It is a non trivial problem and there are many approaches. Both in Julia [@JuliaPR21912; @MutabilitiesPackage] and other languages [@HaskellLens; @ImmutableJS]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mutabilities.jl is just a wrapper of non-type-changing lens from Setfield.jl. So I don't feel it's adequate for showing as an alternative "approach." It may be useful for briefly discussing it as an alternative interface for lenses, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is an interestig perspective. I thought of Mutabilities
as
melt(obj) = mutablecopy(obj)
freeze(obj) = immutablecopy(obj)
And to execute an update you would do melt ... update! ... freeze
.
I thought of the partial melts/freezes
as less important and passing between mutable and immutable as the key idea.
You seem to put much more emphasis on the partial aspect (which I agree is pretty close to lenses) and less emphasis on passing between mutable and immutable.
So really passing between mutable and immutable was the alternative approach I wanted to highlight.
paper/paper.md
Outdated
The analogous operation in the immutable case is to create a copy of `spaceship`, | ||
with just the captains name changed to "Julia". This operation is sometimtes called functional update. | ||
Just think for a moment, how would you do achieve this? | ||
It is a non trivial problem and there are many approaches. Both in Julia [@JuliaPR21912; @MutabilitiesPackage] and other languages [@HaskellLens; @ImmutableJS]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've heard Clojure's Specter took a different(?) approach to lens for mutating immutables but I haven't looked into it yet carefully: http://nathanmarz.com/blog/clojures-missing-piece.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool, I will at take a look!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Elm took an alternative approach: don't use nested immutable and make flat struct/record better.
https://elm-lang.org/docs/records (see "extensible records")
https://www.reddit.com/r/elm/comments/6c6f3b/elm_monocle_vs_haskell_lens_why_the_differences/
I think there was a talk by the creator of Elm in youtube briefly discussing this. But I can't find it at the moment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe I can write a paragraph about this (so that I'd be more comfortable to put me as an author 😄) but I don't have enough time right now. Is there a deadline for the paper?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIU the deadline is somewhere mid october:
Hello everyone,
We hope you had a fantastic JuliaCon 2020! We always enjoy learning about the breadth and drive of the community, as well as meeting old and new friends.
Last year we decided to have conference proceedings for the first time and we are happy and proud to announce that the first set of articles has been published! We are still working on the last few and they will be published on a rolling basis.
We would like to thank all the authors (for writing fantastic articles and for their patience), the reviewers (for their valuable contributions), and the Open Journals (especially Arfon Smith) for their infrastructure and technical support.
So what is next? Every speaker of this JuliaCon edition has the opportunity to write up an article corresponding to their talk and submit it to the JuliaCon proceedings. We accept extended abstracts (1 page without citations ) and full-sized papers (8 pages).
The important dates:
September 30th: article submission of at https://proceedings.juliacon.org Mid-october: Paper must be finalized & compilable. Authors should suggest a set of reviewers. October-June: Review period Published date: July 2021
We are still working on the website with all the details and information about the process.
If you are interested in volunteering as an Editor or Reviewer please contact one of us!
Kind regards,
Mathieu, Valentin & Ranjan JuliaCon proceedings editors
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interestingly, it looks like Haskell/GHC recently decided to add a syntax for nested fields
ghc-proposals/ghc-proposals#282
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0282-record-dot-syntax.rst
(found it via https://news.ycombinator.com/item?id=24538531)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh nice! Not being able to use the same names for fields of distinct types, was always very awkward in haskell.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
btw I took a look at Specter. I like it. I think it is close to traversals in "traditional" optics. Just uses different language. JuliaObjects/Accessors.jl#6 is somewhat inspired by it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tkf FYI I plan to submit the draft tonight (tomorrow in my time zone). I would still like very much to have you listed as a coauthor. If you don't have time to add to the paper text, that's not a concern I think. What counts is your contributions to the project and it feels somewhat strange to me to not have you listed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just submitted the paper.
As part of the Julia Con proceedings, I would like to pubish this. I would be very happy to have you as a coauthor @tkf. Please go ahead and add your name to the paper (in alphabetical order so you are number 1).
Comments or edits are appreciated. I feel the references are lacking. Any suggestions for an open-access lens overview paper?
You can preview the rendered paper by entering the repo url and branch here.