Re: Keys in EDN maps: keywords or symbols

2019-10-24 Thread James Reeves
On Thu, 24 Oct 2019 at 16:48, Anton Vodonosov  wrote:

> Regarding the idea that a keyword is an identifier that designates itself,
> while a symbol is a keyword that designates something else.
>
> Keys in config file map do not designate themselves, they designate the
> corresponding map values.
>
> {username "vasya" email "a@b.c"}
>

Sure, but if I'm reading the edn spec correctly, the intention is that
symbols *in isolation* should identify something. So if I just wrote:

username

What does that identity? If it has no identity beyond itself, then it
should be a keyword. Contrast that to a symbol like:

clojure.core/conj

We know that symbol identifies a clojure function. Even outside of a map,
it has an external identity.

-- 
James Reeves
booleanknot.com

-- 
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/CALg24jTTnA7VXs-kyURLY%3DhzxPZX3jP%2BgMJ38mf1eLe_7AzESg%40mail.gmail.com.


Re: Keys in EDN maps: keywords or symbols

2019-10-24 Thread David Chelimsky
I think James talking about resolution of values when he said "designates", 
not "the value bound to a key in the map." In other words, the keyword 
:email resolves to the keyword :email, whereas the symbol clojure.core/vec 
resolves to a function.

Keywords-as-keys give you some benefits when you're in clojure (you can use 
them as functions of maps e.g. (:email {:email "a...@b.com"}) returns 
"a...@b.com"), which is part of why they are somewhat ubiquitous in Clojure 
code. In your case, since the system is not written in Clojure, perhaps it 
doesn't matter.

As for your example, I see what you mean re:  {3digits "\\d{3}" 2digits 
"\\d{2}"}, where 3digits is intended to be a symbol that always means 
#"\\d{3}". In a Clojure namespace we'd just (def 3digits #"\\d{3}") and use 
3digits everywhere else. I think keywords, however, would make more sense 
for {:username "vasya" :email "a@b.c"}, because the values bound to 
username and email in that map limited to that map.

Hope that all helps.



On Thursday, October 24, 2019 at 10:48:03 AM UTC-5, Anton Vodonosov wrote:
>
> Regarding the idea that a keyword is an identifier that designates itself, 
> while a symbol is a keyword that designates something else.
>
> Keys in config file map do not designate themselves, they designate the 
> corresponding map values.
>
> {username "vasya" email "a@b.c"} 
>
> Here the EMAIL symbol designagtes "a@b.c". Moreover, one of the config 
> file sections allows the user to give arbitrary names to regula 
> expressions. In this config section the user chooses the symbols, the 
> symbols are not predefined in the config file format.
>
> {3digits "\\d{3}" 2digits "\\d{2}"}
>
> in another config section user can refer the regex by the symbols he 
> defined that way. So the map keys in user's definitions allow hig to give 
> names to values; here the names do not designate themselves, they are names 
> for the regular expressions.
>
> Thinking that way, a keywords can be used as vues. For example, some 
> DIRECTION attribute can have one of 4 values: :up, :down, :left, :right. So 
> map key will be a symbol and value will be a keyword:  
>
> {speed 100 direction :up}
>
> Note, this config file is unlikely to be used with Clojure. For users, 
> that's just a text document they author in an editor. The system which 
> parses and is configured by this file is written in Java.
>
>
>

-- 
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/a1502e8e-44e0-4bf5-a044-770fc4623cd3%40googlegroups.com.


2nd Call for Contributions: BOB 2020 [Feb 28, Deadline Nov 8]

2019-10-24 Thread Michael Sperber
Clojure submissions are very welcome at BOB! (Also note that
:clojureD is on the very next day!)

 BOB Conference 2020
 "What happens when we use what's best for a change?"
  http://bobkonf.de/2020/cfc.html
 Berlin, February 28
Call for Contributions
 Deadline: November 8, 2019


You are actively engaged in advanced software engineering methods,
implement ambitious architectures and are open to cutting-edge
innovation? Attend this conference, meet people that share your goals,
and get to know the best software tools and technologies available
today. We strive to offer a day full of new experiences and
impressions that you can use to immediately improve your daily life as
a software developer.

If you share our vision and want to contribute, submit a proposal for
a talk or tutorial!

NOTE: The conference fee will be waived for presenters. Travel
expenses will not be covered (for exceptions see "Speaker Grants").

Speaker Grants
--

BOB has Speaker Grants available to support speakers from groups
under-represented in technology. We specifically seek women speakers
and speakers who are not be able to attend the conference for
financial reasons.

Shepherding
---

The program committee offers shepherding to all speakers. Shepherding
provides speakers assistance with preparing their sessions, as well as
a review of the talk slides.

Topics
--

We are looking for talks about best-of-breed software technology, e.g.:

- functional programming
- persistent data structures and database
- event-based modelling and architectures
- types
- formal methods for correctness and robustness
- abstractions for concurrency and parallelism
- metaprogramming
- probabilistic programming
- math and programming
- controlled side effects
- beyond REST and SOAP
- effective abstractions for data analytics
- ... everything really that isn’t mainstream, but you think should be.

Presenters should provide the audience with information that is
practically useful for software developers.

We're especially interested in experience reports.
Other topics are also relevant, e.g.:

- introductory talks on technical background
- overviews of a given field
- demos and how-tos

Requirements
-

We accept proposals for presentations of 45 minutes (40 minutes talk +
5 minutes questions), as well as 90 minute tutorials for
beginners. The language of presentation should be either English or
German.

Your proposal should include (in your presentation language of choice):

- An abstract of max. 1500 characters.
- A short bio/cv
- Contact information (including at least email address)
- A list of 3-5 concrete ideas of how your work can be applied in a 
developer's daily life
- additional material (websites, blogs, slides, videos of past 
presentations, …)

Submit here:

https://bobcfc.active-group.de/en/bob2020/cfp

Organisation


- Direct questions to contact at bobkonf dot de
- Proposal deadline: November 8, 2019
- Notification: November 22, 2019
- Program: December 6, 2019

Program Committee
-

(more information here: https://bobkonf.de/2020/programmkomitee.html)

- Matthias Fischmann, Wire
- Matthias Neubauer, SICK AG
- Nicole Rauch, Softwareentwicklung und Entwicklungscoaching
- Michael Sperber, Active Group
- Stefan Wehr, factis research

Scientific Advisory Board

- Annette Bieniusa, TU Kaiserslautern
- Torsten Grust, Uni Tübingen
- Peter Thiemann, Uni Freiburg


-- 
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/0e3b1fac-36a4-41b7-a6e8-4459bf97ff17%40googlegroups.com.


Re: Keys in EDN maps: keywords or symbols

2019-10-24 Thread Anton Vodonosov
Regarding the idea that a keyword is an identifier that designates itself, 
while a symbol is a keyword that designates something else.

Keys in config file map do not designate themselves, they designate the 
corresponding map values.
   
{username "vasya" email "a@b.c"} 

Here the EMAIL symbol designagtes "a@b.c". Moreover, one of the config file 
sections allows the user to give arbitrary names to regula expressions. In 
this config section the user chooses the symbols, the symbols are not 
predefined in the config file format.

{3digits "\\d{3}" 2digits "\\d{2}"}

in another config section user can refer the regex by the symbols he 
defined that way. So the map keys in user's definitions allow hig to give 
names to values; here the names do not designate themselves, they are names 
for the regular expressions.

Thinking that way, a keywords can be used as vues. For example, some 
DIRECTION attribute can have one of 4 values: :up, :down, :left, :right. So 
map key will be a symbol and value will be a keyword:  

{speed 100 direction :up}

Note, this config file is unlikely to be used with Clojure. For users, 
that's just a text document they author in an editor. The system which 
parses and is configured by this file is written in Java.


-- 
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/826be497-5400-472a-9959-5ad9b6a75b24%40googlegroups.com.


Re: Keys in EDN maps: keywords or symbols

2019-10-24 Thread James Reeves
In edn, a keyword is an identifier that designates itself, while a symbol
is a keyword that designates something else.

This means keys in a map should generally be keywords, unless they identify
something beyond themselves. For example:

{:profiling/function-count {clojure.core/vec 10}}

On Thu, 24 Oct 2019 at 05:32, Anton Vodonosov  wrote:

> I'm working on a config file format in EDN, and in doubt: should I use
> keywords or symbols as map keys.
>
> After all, the colon is an extra keyboard press - an extra effort for
> users.
>
> As EDN parser doesn't evaluate expressions, there is no need to quote
> symbols when using them as EDN map keys (unlike clojure map literals)
>
> I mean,
>
> (edn/read-string "{a 1 b 2}")
>
> works, while using a clojure map literal would require quoting A and B:
>
> {'a 1 'b 2}
>
> So, is it a good idea to use symbols instead of keywords as map keys in a
> config file?
>
> Probably, an advantage of keywords that they look different visually, so a
> reader easily distinguishes keys from values; But proper indentation,
> optional commas between the key-value pairs in map may be enough for a
> reader to understand everything immediately.
>
>
> --
> 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/b4c1d021-a624-482b-9e75-fa5c08057a42%40googlegroups.com
> 
> .
>


-- 
James Reeves
booleanknot.com

-- 
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/CALg24jRyjXXT%3DNarD2%3DFjNZXb_06tfCZwyAyFZAK%2BQWK3YtaiA%40mail.gmail.com.


Re: [ANN] Cognitect Labs' aws-api 0.8.352

2019-10-24 Thread David Chelimsky
DISREGARD

The correct release number is 0.8.383. 
See https://groups.google.com/forum/#!topic/clojure/8sdm5VW5tmU

On Thursday, October 24, 2019 at 8:23:48 AM UTC-5, David Chelimsky wrote:
>
> Cognitect Labs' aws-api 0.8.352 is now available!
>
> CHANGES in 0.8.352
>
>- Make http calls to fetch credentials async / non-blocking.
>
> CHANGES from 0.8.378 (previously unannounced)
>
>- Include service full names in latest-releases.edn #32 
>
>- Wrap dynamic require of protocol ns in locking form #92 
>
>
>
> README: https://github.com/cognitect-labs/aws-api/API Docs: 
> https://cognitect-labs.github.io/aws-api/
> Changelog: 
> https://github.com/cognitect-labs/aws-api/blob/master/CHANGES.md
> Latest Releases of api, endpoints, and all services: 
> https://github.com/cognitect-labs/aws-api/blob/master/latest-releases.edn
>
>

-- 
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/d2c680f7-cf6d-4b22-8e6d-d75f1a7eef11%40googlegroups.com.


Re: Keys in EDN maps: keywords or symbols

2019-10-24 Thread Jason Felice
My personal opinion is to prefer keywords, and prefer less preprocessing of
the configuration before the program uses it.

If it gets to a place where the configuration changes a lot, and a
"natural" (read: clojure-like) expression of the configuration in EDN has
either a lot of redundancy, or bits that must agree with each other, then
I'd look to create a sublanguage for the config that makes it harder to
specify incorrect things, and that's when I might use symbols.  That
depends on how the language looks, mostly.

That said, I have a place in my config where I use symbols as map keys
because it is specifying GraphQL attribute names, and other non-Clojure
developers edit it.

-- 
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/CAB6_SoanVGAW2jhZNY0NS9XFGap6q5r7HHSgsRN99EoZ2ehCDw%40mail.gmail.com.


[ANN] Cognitect Labs' aws-api 0.8.383

2019-10-24 Thread David Chelimsky
Cognitect Labs' aws-api 0.8.383 is now available!

CHANGES in 0.8.383

   - Make http calls to fetch credentials async / non-blocking.
   
CHANGES from 0.8.378 (previously unannounced)

   - Include service full names in latest-releases.edn #32 
   
   - Wrap dynamic require of protocol ns in locking form #92 
   


README: https://github.com/cognitect-labs/aws-api/API Docs: 
https://cognitect-labs.github.io/aws-api/
Changelog: https://github.com/cognitect-labs/aws-api/blob/master/CHANGES.md
Latest Releases of api, endpoints, and all services: 
https://github.com/cognitect-labs/aws-api/blob/master/latest-releases.edn

-- 
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/e1b28a8f-abeb-4f5f-8913-6b6ad715f69c%40googlegroups.com.


[ANN] Cognitect Labs' aws-api 0.8.352

2019-10-24 Thread David Chelimsky
Cognitect Labs' aws-api 0.8.352 is now available!

CHANGES in 0.8.352

   - Make http calls to fetch credentials async / non-blocking.
   
CHANGES from 0.8.378 (previously unannounced)

   - Include service full names in latest-releases.edn #32 
   
   - Wrap dynamic require of protocol ns in locking form #92 
   


README: https://github.com/cognitect-labs/aws-api/API Docs: 
https://cognitect-labs.github.io/aws-api/
Changelog: https://github.com/cognitect-labs/aws-api/blob/master/CHANGES.md
Latest Releases of api, endpoints, and all services: 
https://github.com/cognitect-labs/aws-api/blob/master/latest-releases.edn

-- 
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/78a06860-e616-4bf9-83e6-426b60fffe16%40googlegroups.com.