Skip to content
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

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

add paper draft #148

wants to merge 7 commits into from

Conversation

jw3126
Copy link
Owner

@jw3126 jw3126 commented Sep 13, 2020

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.

@tkf
Copy link
Collaborator

tkf commented Sep 16, 2020

Any suggestions for an open-access lens overview paper?

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
https://github.com/ekmett/lens/wiki/FAQ#lens-resources
https://github.com/ekmett/lens/wiki/History-of-Lenses
can be useful?

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].
Copy link
Collaborator

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.

Copy link
Owner Author

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].
Copy link
Collaborator

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

Copy link
Owner Author

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!

Copy link
Collaborator

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.

Copy link
Collaborator

@tkf tkf Sep 16, 2020

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?

Copy link
Owner Author

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

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Owner Author

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.

Copy link
Owner Author

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.

Copy link
Owner Author

@jw3126 jw3126 Sep 29, 2020

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.

Copy link
Owner Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants