[ANN] Lightmod, an all-in-one tool for full stack Clojure

2017-11-04 Thread Zach Oakes
Today I'm releasing a new tool that lets you make full stack Clojure web 
apps without any build tools or even any system-wide JDK install. It runs 
everything internally and gives a very integrated experience that I think 
is great for newcomers. You are limited to the libraries that I bundled 
with the tool, so this is just meant to be a smoother stepping stone before 
you take the red pill and become a full clojure acolyte. Anyway here's the 
website:

https://sekao.net/lightmod/

Check out the screencast on the website to see it in action. Please let me 
know when you find bugs...my first releases are always pretty shaky. Enjoy!

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: [ANN] Lightmod, an all-in-one tool for full stack Clojure

2017-11-04 Thread Andrew Oberstar
This is really cool! Nice job!

Andrew Oberstar

On Sat, Nov 4, 2017 at 12:50 PM Zach Oakes  wrote:

> Today I'm releasing a new tool that lets you make full stack Clojure web
> apps without any build tools or even any system-wide JDK install. It runs
> everything internally and gives a very integrated experience that I think
> is great for newcomers. You are limited to the libraries that I bundled
> with the tool, so this is just meant to be a smoother stepping stone before
> you take the red pill and become a full clojure acolyte. Anyway here's the
> website:
>
> https://sekao.net/lightmod/
>
> Check out the screencast on the website to see it in action. Please let me
> know when you find bugs...my first releases are always pretty shaky. Enjoy!
>
> --
> 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.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: What's up with IMeta?

2017-11-04 Thread James Reeves
On 3 November 2017 at 06:57, Didier  wrote:

> Okay, I can see how I can maybe infer some of that by piecing together the
> code base, but if there was a book, or a reference somewhere describing
> more the implementation of Clojure itself I'd be interested to read it, if
> there is one out there. I'd understand if there's not, I know Clojure has
> no formal semantic spec.
>

I don't know of one, I'm afraid.


> Also, I guess I'm still confused about that bit:
>
> > That said, metadata and its relationship to an object is immutable - an
> object with different metadata is a different object. One consequence of
> this is that applying metadata to a lazy sequence will realize the head of
> the sequence so that both objects can share the same sequence.
>

What confuses you about it? Is it the "realize the head of the sequence"
part?

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: What's up with IMeta?

2017-11-04 Thread Didier

>
> > That said, metadata and its relationship to an object is immutable - an 
>> object with different metadata is a different object. One consequence of 
>> this is that applying metadata to a lazy sequence will realize the head of 
>> the sequence so that both objects can share the same sequence.
>>
>
> What confuses you about it? Is it the "realize the head of the sequence" 
> part?
>

I think I'm firstly confused by the use of the word object. I'm guessing in 
this case it refers to things that implement IObj? I'm then confused by 
what is meant that an object with different meta is a different object, if 
they are still equal? I'm guessing it means that if you change the meta on 
an IObj, you get a copy? And then I'm confused as to why that would cause 
lazy-seq to realize their head? Can't two lazy-seq share the same head?

On Saturday, 4 November 2017 11:40:54 UTC-7, James Reeves wrote:
>
> On 3 November 2017 at 06:57, Didier > 
> wrote:
>
>> Okay, I can see how I can maybe infer some of that by piecing together 
>> the code base, but if there was a book, or a reference somewhere describing 
>> more the implementation of Clojure itself I'd be interested to read it, if 
>> there is one out there. I'd understand if there's not, I know Clojure has 
>> no formal semantic spec.
>>
>
> I don't know of one, I'm afraid.
>  
>
>> Also, I guess I'm still confused about that bit:
>>
>> > That said, metadata and its relationship to an object is immutable - an 
>> object with different metadata is a different object. One consequence of 
>> this is that applying metadata to a lazy sequence will realize the head of 
>> the sequence so that both objects can share the same sequence.
>>
>
> What confuses you about it? Is it the "realize the head of the sequence" 
> part?
>
> -- 
> 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.
For more options, visit https://groups.google.com/d/optout.


Re: What's up with IMeta?

2017-11-04 Thread Justin Smith
first class values on the jvm are objects

On Sat, Nov 4, 2017 at 5:57 PM Didier  wrote:

> > That said, metadata and its relationship to an object is immutable - an
>>> object with different metadata is a different object. One consequence of
>>> this is that applying metadata to a lazy sequence will realize the head of
>>> the sequence so that both objects can share the same sequence.
>>>
>>
>> What confuses you about it? Is it the "realize the head of the sequence"
>> part?
>>
>
> I think I'm firstly confused by the use of the word object. I'm guessing
> in this case it refers to things that implement IObj? I'm then confused by
> what is meant that an object with different meta is a different object, if
> they are still equal? I'm guessing it means that if you change the meta on
> an IObj, you get a copy? And then I'm confused as to why that would cause
> lazy-seq to realize their head? Can't two lazy-seq share the same head?
>
> On Saturday, 4 November 2017 11:40:54 UTC-7, James Reeves wrote:
>
>> On 3 November 2017 at 06:57, Didier  wrote:
>>
>>> Okay, I can see how I can maybe infer some of that by piecing together
>>> the code base, but if there was a book, or a reference somewhere describing
>>> more the implementation of Clojure itself I'd be interested to read it, if
>>> there is one out there. I'd understand if there's not, I know Clojure has
>>> no formal semantic spec.
>>>
>>
>> I don't know of one, I'm afraid.
>>
>>
>>> Also, I guess I'm still confused about that bit:
>>>
>>> > That said, metadata and its relationship to an object is immutable -
>>> an object with different metadata is a different object. One consequence of
>>> this is that applying metadata to a lazy sequence will realize the head of
>>> the sequence so that both objects can share the same sequence.
>>>
>>
>> What confuses you about it? Is it the "realize the head of the sequence"
>> part?
>>
>> --
>> 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.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: What's up with IMeta?

2017-11-04 Thread James Reeves
On 5 November 2017 at 00:57, Didier  wrote:

> I think I'm firstly confused by the use of the word object. I'm guessing
> in this case it refers to things that implement IObj?
>

It means an object on the JVM.


> I'm then confused by what is meant that an object with different meta is a
> different object, if they are still equal?
>

Two objects can be equal, yet refer to two different locations in memory.
For example:

  user=> (def a (java.net.URI. "/foo"))
  #'user/a
  user=> (def b (java.net.URI. "/foo"))
  #'user/b

Here are two objects that are equal, but they each have a different
location in memory:

  user=> a
  #object[java.net.URI 0xf20da5a "/foo"]
  user=> b
  #object[java.net.URI 0x290826b7 "/foo"]

When two symbols reference the same object in memory, we say they are
*identical*. In this case, a and b are *equal* but not *identical*.

  user=> (identical? a b)
  false
  user=> (= a b)
  true

I'm guessing it means that if you change the meta on an IObj, you get a
> copy?
>

It's more accurate to say that an IObj's metadata cannot be changed; you
can only create a new IObj with new metadata.

And then I'm confused as to why that would cause lazy-seq to realize their
> head? Can't two lazy-seq share the same head?
>

This I'm not too certain about. It may just be an implementation detail.

-- 
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.
For more options, visit https://groups.google.com/d/optout.