Hi Sean,
I'm back home and trying to understand/internalize this...Unfortunately,
this kind of (flat & arg-less) navigation is not going to be very useful
for the majority of java.time (datafied) objects. That is for two
reasons... First of all the datafied maps I'm returning are nested. This
means that for example to get to the `YearMonth` object, you would need
to navigate to the [:year :month] path, and in the absence of `nav-in`
this is somewhat awkward. Secondly, most of the interesting/useful
conversions (in the context of date-times), almost always requires some
sort of argument (e.g. `Instant` to `LocalDateTime`), and so if the last
arg to `nav` has to be either nil (for missing keys), or match the
actual value in the map, then there is no room left for arguments.
It is true that I'm probably trying to do too much with `nav`, but now
that I'm understanding its purpose better, I get the feeling that it's
not going to be as useful as I originally thought (in the context of
this lib). Yes, I can pull all the clever stuff into distinct functions,
but ultimately for `nav` to be useful I would have to either:
1. Change the datafied representation to something flat, OR
2. accept that navigating to pure data (via `get-in`) will be done with
real paths (e.g. `[:year :month]`), whereas navigating to objects (via
`nav`) will be done with bogus keys (e.g. `:month-of-year`).
As things stand (with my current nested representation), only LocalDate,
LocalDateTime, OffsetDateTime & ZonedDateTime can have useful navigations:
- LocalDate => :week-day , :year-month
- LocalDateTime => :local-date, :local-time
- OffsetDateTime => :local-datetime, :instant
- ZonedDateTime => :offset-datetime, :local-datetime, :instant
That is pretty much it in terms of `nav`...
Does that make (more) sense?
Many thanks in advance...
Dimitris
ps: Sean I can be on slack but with my work email
On 04/02/2020 05:18, Sean Corfield wrote:
You're misunderstanding me. I'll try again.
I'm not saying you can't navigate to keys that don't exist in the data
-- but since there would be no corresponding value, the nav call would
be (nav coll k nil) essentially.
If (get coll k) produces some value v, then (nav coll k v) will take
you from the right side (pure data) to the left side (objects) to the
object that "corresponds" to the equivalent navigation on the right
(i.e., within the data).
object -> datafy -> pure data
pure data -> get etc -> new pure data
pure data -> nav -> new object "corresponding" to new pure data
On Mon, Feb 3, 2020 at 3:38 AM Dimitrios Jim Piliouras
<jimpil1...@gmail.com <mailto:jimpil1...@gmail.com>> wrote:
This is what I've done but it contradicts what we said earlier...
If I navigate to some existing key and it gives me back a Java
object, then it means that the datafied representation had a key
pointing to non data!
I have read your blog post multiple times ;), but I think the
situation you're describing with the foreign keys is rather unique...
The datafied datetime cannot possibly include all its possible
formats, nor all the possible alternatives - that would be
extremely wasteful and meaningless the way I see it.
Let's take an Instant as an example...it datafies to map of two
keys (:epoch, :second). Does it make sense to add a :format-iso
key in there pointing to a String? Is there any point navigating
to that key? Is there any point navigating to :epoch or :second?
The answer is no, right? Is there a point in navigating to
:zoned-datetime given a zone id? I would think yes...
On Mon, 3 Feb 2020, 04:47 Sean Corfield, <s...@corfield.org
<mailto:s...@corfield.org>> wrote:
Think of it as a square:
You start with an object of some sort (left side) -> datafy ->
turns it into pure Clojure data (including metadata). (right side)
Given pure Clojure data, you can navigate through it with get
etc and you stay in the right side (pure data).
Given that pure Clojure data, you can navigate back to the
left hand wide with nav, mimicking how get etc work.
So datafy is L -> R, get is R -> R, nav is R -> L on a
"diagonal" that takes you back to the object world on the
left, corresponding to the place on the right that you'd get
to via get etc.
See if this blog post helps
https://corfield.org/blog/2018/12/03/datafy-nav/
On Sun, Feb 2, 2020 at 1:22 AM Dimitrios Jim Piliouras
<jimpil1...@gmail.com <mailto:jimpil1...@gmail.com>> wrote:
Hi Sean,
Admittedly, I’ve never used REBL, and I did struggle with
the shape and name of the `nav` arguments...
In particular I’m struggling to understand why would
anyone use `nav` to navigate to a key that already exists
in the map...Can’t we just use `get` or `get-in`?
You used the :format as an example, which works with nil,
:iso, or a String pattern as the last arg to nav. But
again, :format is NOT in the datafied representation.
In essence, I’ve tried to use `nav` to navigate to things
that can be expensive and don’t necessarily belong in the
actual datafied representation.
If the second argument to `nav`, is expected to be a key
already present in the map, then I really don’t understand
what is the point of `nav`.
kind regards,
Dimitris
*From: *Sean Corfield <mailto:s...@corfield.org>
*Sent: *02 February 2020 07:36
*To: *Clojure Mailing List <mailto:clojure@googlegroups.com>
*Subject: *Re: ANN: jedi-time 0.1.4
This is very cool but I would strongly recommend you try
using this with REBL so you can figure out how to make the
`nav` part work in a more natural way.
nav is intended to work with a key and value (from the
datafied structure), but your nav expects special values
so it doesn't work with REBL.
You can put (java.time.Instant/now) into REBL and your
datafication produces a great data representation, but you
can't navigate into it using the keys (and values) of the
data structure itself. You can put :format into the nav->
bar and it defaults to a format you can get a string back,
but none of the other nav calls will work.
You might consider combining the :format key with the
actual format, e.g., :format-iso, :format-yy-MM-dd and if
the key is something your don't recognize, just let it
behave like regular data navigation.
I think you're trying to do too much with nav, beyond
"navigation". I think you could split some of the "clever"
navigation out into a transform function that takes a
datafied time and produces a new datafied time, and then
let nav do the "conversion" back to Java objects. You've
complected the transforms and the conversion right now.
If you're on Slack, I'm happy to DM about this in more
detail (when you're back from traveling).
Sean
On Sat, Feb 1, 2020 at 6:02 AM dimitris
<jimpil1...@gmail.com <mailto:jimpil1...@gmail.com>> wrote:
Hi folks,
The first public release of `jedi-time` should be
hitting clojars any
minute now. I am traveling next week so may be slow to
reply to
feedback/bugs/PRs...
https://github.com/jimpil/jedi-time
Kind regards,
Dimitris
--
You received this message because you are subscribed
to the Google
Groups "Clojure" group.
To post to this group, send email to
clojure@googlegroups.com <mailto:clojure@googlegroups.com>
Note that posts from new members are moderated -
please be patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed
to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving
emails from it, send an email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/8dbb9c5b-0ab0-fc76-6dc6-5e75b93d452a%40gmail.com.
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles Networks, LLC. --
https://worldsinglesnetworks.com/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
--
You received this message because you are subscribed to
the Google
Groups "Clojure" group.
To post to this group, send email to
clojure@googlegroups.com <mailto:clojure@googlegroups.com>
Note that posts from new members are moderated - please be
patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to
the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/CAD4thx-dwJkYYsGDWnD%3DAc7oaNBHqykGPzYhTHdWQRJmbk1DEw%40mail.gmail.com
<https://groups.google.com/d/msgid/clojure/CAD4thx-dwJkYYsGDWnD%3DAc7oaNBHqykGPzYhTHdWQRJmbk1DEw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to
the Google
Groups "Clojure" group.
To post to this group, send email to
clojure@googlegroups.com <mailto:clojure@googlegroups.com>
Note that posts from new members are moderated - please be
patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to
the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/5e3694b9.1c69fb81.8a875.d5ea%40mx.google.com
<https://groups.google.com/d/msgid/clojure/5e3694b9.1c69fb81.8a875.d5ea%40mx.google.com?utm_medium=email&utm_source=footer>.
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles Networks, LLC. -- https://worldsinglesnetworks.com/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
<mailto:clojure@googlegroups.com>
Note that posts from new members are moderated - please be
patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the
Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to clojure+unsubscr...@googlegroups.com
<mailto:clojure+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/CAD4thx8GRuxeGd-MrMSti%2BWRV1neRFOLWNh08xpb-Qrmya0kZw%40mail.gmail.com
<https://groups.google.com/d/msgid/clojure/CAD4thx8GRuxeGd-MrMSti%2BWRV1neRFOLWNh08xpb-Qrmya0kZw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
<mailto:clojure@googlegroups.com>
Note that posts from new members are moderated - please be patient
with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
<mailto:clojure%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to clojure+unsubscr...@googlegroups.com
<mailto:clojure+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/CAE3KzwJ9QuTB7gOMdyja5LyczStJzgsEv9c%3D3_cM%2BoY2_ppPRA%40mail.gmail.com
<https://groups.google.com/d/msgid/clojure/CAE3KzwJ9QuTB7gOMdyja5LyczStJzgsEv9c%3D3_cM%2BoY2_ppPRA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles Networks, LLC. -- https://worldsinglesnetworks.com/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient
with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to clojure+unsubscr...@googlegroups.com
<mailto:clojure+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/CAD4thx_1%2BwQi6_-BkiPLM%3DUvAm84wWF3Ob_%2B%3DZ2nZx-9uHj2fQ%40mail.gmail.com
<https://groups.google.com/d/msgid/clojure/CAD4thx_1%2BwQi6_-BkiPLM%3DUvAm84wWF3Ob_%2B%3DZ2nZx-9uHj2fQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/clojure/470f811f-21cb-74f4-bd85-4a3fb5792fef%40gmail.com.