Re: Stream closed...

2011-08-12 Thread Sean Corfield
Yeah, I got the impression the OP was trying to create a new file with
double the contents of the old one - the (str file-path 2) piece - but yours
is certainly a slick way to double the original file!

On Fri, Aug 12, 2011 at 8:47 PM, Dave Ray  wrote:

> Even shorter:
>
> (defn duplicate-file-data [file-path] (spit file-path (slurp
> file-path) :append true))
>
> Dave
>
> On Fri, Aug 12, 2011 at 11:16 PM, Sean Corfield 
> wrote:
> > I think you also want to reorganize the code so you get the line-seq and
> > then the line-count outside the for loop. And bear in mind that (inc
> > line-count) just returns line-count + 1 - it does not update line-count
> > which is what I'm guessing you're expecting?
> > Or you could just use slurp and spit:
> > (defn duplicate-file-data [file-path] (let [content (slurp file-path)]
> (spit
> > (str file-path 2) (str content content
> >
> > On Fri, Aug 12, 2011 at 8:05 PM, Sean Corfield 
> > wrote:
> >>
> >> (for ...) generates a lazy sequence so it isn't realized until after the
> >> value is returned from the function. You need to wrap (for ...) with
> (doall
> >> ...) to realize the sequence inside (with-open ...)
> >>
> >> On Fri, Aug 12, 2011 at 4:47 PM, turcio  wrote:
> >>>
> >>> Hi,
> >>> I'm trying to write a function which creates file twice as big
> >>> compared to the original file by simply duplicating its content.
> >>>
> >>> It looks like in the for loop I can't even read the first line
> >>> although I'm using with-open. Can you tell me what am I doing wrong?
> >>>
> >>> (defn duplicate-file-data [file-path]
> >>>  (with-open [reader (clojure.java.io/reader file-path)
> >>>  writer (clojure.java.io/writer (str file-path 2) :append
> >>> true)]
> >>>   (for [line (line-seq reader)
> >>> :let [line-count (count(line-seq
> >>> reader))
> >>>   curr-line 0]
> >>> :when (< curr-line line-count)]
> >>> ((.write writer (str line))
> >>>  (.newLine writer)
> >>>  (inc curr-line))
> >>> )))
> >>>
> >>>
> >>> --
> >>> Thanks
> >>> Daniel
> >>>
> >>> --
> >>> 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
> >>
> >>
> >> --
> >> Sean A Corfield -- (904) 302-SEAN
> >> An Architect's View -- http://corfield.org/
> >> World Singles, LLC. -- http://worldsingles.com/
> >> Railo Technologies, Inc. -- http://www.getrailo.com/
> >>
> >> "Perfection is the enemy of the good."
> >> -- Gustave Flaubert, French realist novelist (1821-1880)
> >
> >
> >
> > --
> > Sean A Corfield -- (904) 302-SEAN
> > An Architect's View -- http://corfield.org/
> > World Singles, LLC. -- http://worldsingles.com/
> > Railo Technologies, Inc. -- http://www.getrailo.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 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
>



-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/
Railo Technologies, Inc. -- http://www.getrailo.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.googl

Re: Stream closed...

2011-08-12 Thread Dave Ray
Even shorter:

(defn duplicate-file-data [file-path] (spit file-path (slurp
file-path) :append true))

Dave

On Fri, Aug 12, 2011 at 11:16 PM, Sean Corfield  wrote:
> I think you also want to reorganize the code so you get the line-seq and
> then the line-count outside the for loop. And bear in mind that (inc
> line-count) just returns line-count + 1 - it does not update line-count
> which is what I'm guessing you're expecting?
> Or you could just use slurp and spit:
> (defn duplicate-file-data [file-path] (let [content (slurp file-path)] (spit
> (str file-path 2) (str content content
>
> On Fri, Aug 12, 2011 at 8:05 PM, Sean Corfield 
> wrote:
>>
>> (for ...) generates a lazy sequence so it isn't realized until after the
>> value is returned from the function. You need to wrap (for ...) with (doall
>> ...) to realize the sequence inside (with-open ...)
>>
>> On Fri, Aug 12, 2011 at 4:47 PM, turcio  wrote:
>>>
>>> Hi,
>>> I'm trying to write a function which creates file twice as big
>>> compared to the original file by simply duplicating its content.
>>>
>>> It looks like in the for loop I can't even read the first line
>>> although I'm using with-open. Can you tell me what am I doing wrong?
>>>
>>> (defn duplicate-file-data [file-path]
>>>  (with-open [reader (clojure.java.io/reader file-path)
>>>              writer (clojure.java.io/writer (str file-path 2) :append
>>> true)]
>>>                               (for [line (line-seq reader)
>>>                                     :let [line-count (count(line-seq
>>> reader))
>>>                                           curr-line 0]
>>>                                     :when (< curr-line line-count)]
>>>                                 ((.write writer (str line))
>>>                                          (.newLine writer)
>>>                                          (inc curr-line))
>>>                                 )))
>>>
>>>
>>> --
>>> Thanks
>>> Daniel
>>>
>>> --
>>> 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
>>
>>
>> --
>> Sean A Corfield -- (904) 302-SEAN
>> An Architect's View -- http://corfield.org/
>> World Singles, LLC. -- http://worldsingles.com/
>> Railo Technologies, Inc. -- http://www.getrailo.com/
>>
>> "Perfection is the enemy of the good."
>> -- Gustave Flaubert, French realist novelist (1821-1880)
>
>
>
> --
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> Railo Technologies, Inc. -- http://www.getrailo.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 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


ANN: match 0.1.0-SNAPSHOT

2011-08-12 Thread David Nolen
Just pushed a version of match to Clojars, would love to hear feedback!

Since our earlier announcement we now have:

* Guard Patterns
* Or Patterns
* As Patterns
* Java Interop

All this and we've only added about ~260 lines of code which bodes well for
ease of extending the library.

We're sure there are many, many bugs. Let us know what does and doesn't work
for you.

The project repo has updated examples and documentation:

https://github.com/swannodette/match

David

-- 
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

Re: Stream closed...

2011-08-12 Thread Sean Corfield
I think you also want to reorganize the code so you get the line-seq and
then the line-count outside the for loop. And bear in mind that (inc
line-count) just returns line-count + 1 - it does not update line-count
which is what I'm guessing you're expecting?

Or you could just use slurp and spit:

(defn duplicate-file-data [file-path] (let [content (slurp file-path)] (spit
(str file-path 2) (str content content

On Fri, Aug 12, 2011 at 8:05 PM, Sean Corfield wrote:

> (for ...) generates a lazy sequence so it isn't realized until after the
> value is returned from the function. You need to wrap (for ...) with (doall
> ...) to realize the sequence inside (with-open ...)
>
>
> On Fri, Aug 12, 2011 at 4:47 PM, turcio  wrote:
>
>> Hi,
>> I'm trying to write a function which creates file twice as big
>> compared to the original file by simply duplicating its content.
>>
>> It looks like in the for loop I can't even read the first line
>> although I'm using with-open. Can you tell me what am I doing wrong?
>>
>> (defn duplicate-file-data [file-path]
>>  (with-open [reader (clojure.java.io/reader file-path)
>>  writer (clojure.java.io/writer (str file-path 2) :append
>> true)]
>>   (for [line (line-seq reader)
>> :let [line-count (count(line-seq
>> reader))
>>   curr-line 0]
>> :when (< curr-line line-count)]
>> ((.write writer (str line))
>>  (.newLine writer)
>>  (inc curr-line))
>> )))
>>
>>
>> --
>> Thanks
>> Daniel
>>
>> --
>> 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
>
>
>
>
> --
> Sean A Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
> World Singles, LLC. -- http://worldsingles.com/
> Railo Technologies, Inc. -- http://www.getrailo.com/
>
> "Perfection is the enemy of the good."
> -- Gustave Flaubert, French realist novelist (1821-1880)
>



-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/
Railo Technologies, Inc. -- http://www.getrailo.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

Re: lein deps gets error

2011-08-12 Thread Ken Wesson
On Fri, Aug 12, 2011 at 6:53 PM, jayvandal  wrote:
> I do a lein new hello_world and I get a directory called hello_world.
> I then try "lein deps".
> I get several lines of errors starting with "#!"
> What am I doing wrong?
> =
>
> Microsoft Windows [Version 6.0.6002]
> Copyright (c) 2006 Microsoft Corporation.  All rights reserved.
>
> C:\>cd cl*
>
> C:\clojure-1.2.1>cd h*
>
> C:\clojure-1.2.1\helloworld>lein deps
>
> C:\clojure-1.2.1\helloworld>#!/bin/sh
> '#!' is not recognized as an internal or external command,
> operable program or batch file.
>
> C:\clojure-1.2.1\helloworld>LEIN_VERSION="1.6.1"
> 'LEIN_VERSION' is not recognized as an internal or external command,
> operable program or batch file.

...

Looks like you're trying to run the unix version on windows.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Stream closed...

2011-08-12 Thread Sean Corfield
(for ...) generates a lazy sequence so it isn't realized until after the
value is returned from the function. You need to wrap (for ...) with (doall
...) to realize the sequence inside (with-open ...)

On Fri, Aug 12, 2011 at 4:47 PM, turcio  wrote:

> Hi,
> I'm trying to write a function which creates file twice as big
> compared to the original file by simply duplicating its content.
>
> It looks like in the for loop I can't even read the first line
> although I'm using with-open. Can you tell me what am I doing wrong?
>
> (defn duplicate-file-data [file-path]
>  (with-open [reader (clojure.java.io/reader file-path)
>  writer (clojure.java.io/writer (str file-path 2) :append
> true)]
>   (for [line (line-seq reader)
> :let [line-count (count(line-seq
> reader))
>   curr-line 0]
> :when (< curr-line line-count)]
> ((.write writer (str line))
>  (.newLine writer)
>  (inc curr-line))
> )))
>
>
> --
> Thanks
> Daniel
>
> --
> 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




-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/
Railo Technologies, Inc. -- http://www.getrailo.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

Clojure on Javascript: Crockford javascript lectures

2011-08-12 Thread daly
You might want to look at some of the information 
on Crockford's webpage about Javascript

http://javascript.crockford.com

In particular, lecture 3 in his video series is about
functions, classes, objects, etc in Javascript:

http://www.yuiblog.com/blog/2010/02/24/video-crockonjs-3

Tim Daly
d...@axiom-developer.org



-- 
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


Stream closed...

2011-08-12 Thread turcio
Hi,
I'm trying to write a function which creates file twice as big
compared to the original file by simply duplicating its content.

It looks like in the for loop I can't even read the first line
although I'm using with-open. Can you tell me what am I doing wrong?

(defn duplicate-file-data [file-path]
  (with-open [reader (clojure.java.io/reader file-path)
  writer (clojure.java.io/writer (str file-path 2) :append
true)]
   (for [line (line-seq reader)
 :let [line-count (count(line-seq
reader))
   curr-line 0]
 :when (< curr-line line-count)]
 ((.write writer (str line))
  (.newLine writer)
  (inc curr-line))
 )))


--
Thanks
Daniel

-- 
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


lein deps gets error

2011-08-12 Thread jayvandal
I do a lein new hello_world and I get a directory called hello_world.
I then try "lein deps".
I get several lines of errors starting with "#!"
What am I doing wrong?
=

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\>cd cl*

C:\clojure-1.2.1>cd h*

C:\clojure-1.2.1\helloworld>lein deps

C:\clojure-1.2.1\helloworld>#!/bin/sh
'#!' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>LEIN_VERSION="1.6.1"
'LEIN_VERSION' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>export LEIN_VERSION
'export' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>case $LEIN_VERSION in
'case' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>*SNAPSHOT) SNAPSHOT="YES" ;;
'*SNAPSHOT)' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>*) SNAPSHOT="NO" ;;
'*)' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld>esac
'esac' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld># Make sure classpath is in unix format
for manipula
ting, then put
'#' is not recognized as an internal or external command,
operable program or batch file.

C:\clojure-1.2.1\helloworld># it back to windows format when we use it
'#' is not recognized as an internal or external command,
operable program or batch file.
"$OSTYPE" was unexpected at this time.

C:\clojure-1.2.1\helloworld>if [ "$OSTYPE" = "cygwin" ] &&
[ "$CLASSPATH" != ""
]; then

C:\clojure-1.2.1\helloworld>

-- 
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


Re: Clojure/conj 2011 Call For Speakers Ends Soon - Aug 19th!

2011-08-12 Thread Christopher Redinger
On Friday, August 12, 2011 2:42:04 PM UTC-4, Christopher Redinger wrote:
>
> Speakers will receive:
> * A catered speakers dinner on Thursday night.
>

Correction: Wednesday night. 

-- 
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

Re: Stanford AI Class

2011-08-12 Thread daly
On Fri, 2011-08-12 at 21:49 -0400, Ken Wesson wrote:
> (defn f [x]
>   (println "hello, " x))
> 
> (defn g []
>   (eval '(defn f [x] (println "goodbye, " x
> 
> (defn -main []
>   (#'user/f "world!")
>   (g)
>   (#'user/f "cruel world."))
> 
> Close enough? :)

You get an A. --Tim



-- 
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


Re: ClassCastException with contrib replace-first-str

2011-08-12 Thread Sean Corfield
Looks like replace-first-str was deprecated in 1.2: {:deprecated "1.2"}

All future contrib work is focused on the new modular libraries with no
maintenance planned on the old monolithic contrib, so I think I'd recommend
not using replace-first-str and instead use this:
(clojure.string/replace-first "aa" #"a" "b")

On Fri, Aug 12, 2011 at 11:42 AM, Marius  wrote:

> I found a small bug in Clojure Contrib 1.2.0.
>
> To reproduce:
> (require '[clojure.contrib.string :as s])
> (s/replace-str "a" "b" "aa")
> ; "bb" as expected
>
> (s/replace-first-str "a" "b" "aa")
> ; java.lang.ClassCastException: java.lang.String cannot be cast to
> java.util.regex.Pattern
>
>

-- 
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

Re: Stanford AI Class

2011-08-12 Thread Ken Wesson
(defn f [x]
  (println "hello, " x))

(defn g []
  (eval '(defn f [x] (println "goodbye, " x

(defn -main []
  (#'user/f "world!")
  (g)
  (#'user/f "cruel world."))

Close enough? :)

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Stanford AI Class

2011-08-12 Thread daly


On Fri, 2011-08-12 at 16:30 -0700, pmbauer wrote:
> +1
> 
> On Friday, August 12, 2011 3:16:15 PM UTC-7, Sergey Didenko wrote:
> BTW, Is there a case when AI self-modifying program is much
> more elegant than AI just-data-modifying program?
> 
> I just can't figure out any example when there is a lot of
> sense to go the self-modifying route.

Clearly both are equivalent in a Turing sense.

If you are 6 foot tall but "modify that in data"
so you are 7 foot tall and always report yourself
as 7 foot tall then there is no way to distinguish
that from the records. Yet there is a philosophical 
difference between "being" and "reporting". AI involves
a lot of debate about philosophy so expect that.

Learning, by one definition, involves a permanent change
in behavior. This has to be reported in some way. Since
programs are data in lisp this is something of a semantics
debate. Is the program "really changed" or just "reporting"?

Consider a more "advanced" kind of learning where we use
genetic programs to evolve behavior. Clearly you can do this
all using data but it is a bit more elegant if you can take
"genes" (i.e. slices of code), do crossovers (i.e. merge the
slices of code into other slices), and get a new mutated set
of "genes". These can be embedded in chromosomes which are
just larger pieces of code. Real cells don't use a "data
scratchpad", they self-modify.

The resulting self-modified lisp code has execution semantics
defined by the language standard (well, CL has a standard).
The "data representation" does not have standard semantics.
Data has semantics relative to the "master smart program thing"
you wrote. 

It turns out that self-modifying lisp code is both interesting
and elegant as the "data" is "itself", not some reported-thing.
There is a reason lisp dominated the AI world for so long.

Many centuries ago I authored a language called KROPS (see
[1] below). It was a program that allowed you to
represent knowledge using both subsumption (KREP-style) and
rules (OPS5-style). Adding a new piece of knowledge caused it
to self-modify in a way that allowed both execution semantics
and "data" semantics. KROPS is way too complex to explain here
but it was very elegant. IBM built a financial and marketing
expert system in KROPS on symbolics machines. The point of all
of this self-trumpet noise is that I don't believe I could have
had the insight to build it in a "data" model. I just let it
build itself to evolve a problem solution. There was no data,
only program.

This isn't intended to be a debate about WHY we might want a
self-modifying program. It is a question of whether Clojure, as
a Lisp, is sufficiently well-crafted to allow it to self-modify.
It has been done in other lisps but I don't yet know how to do
it in Clojure. If you only want a "master smart program thing
that reports data" that's perfectly fine. You could write that
in any language. 


Tim Daly
d...@axiom-developer.org

[Daly, Kastner, Mays "Integrating rules and inheritance networks
in a knowledge-based financial and marketing consultation system"
HICSS 1988, pp495-500]


-- 
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


Re: Self-joins in ClojureQL

2011-08-12 Thread Zak Wilson
Update: CQL does in fact support self-joins. An example of the correct
syntax is here: http://pastie.org/2356343

-- 
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


Re: Creating global javascript objects (like Date) in Clojurescript

2011-08-12 Thread Conrad
Ah! I didn't know about a js namespace- Thanks for figuring that out,
Michael!

On Aug 12, 6:15 pm, Michael Wood  wrote:
> On 12 August 2011 23:19, Conrad  wrote:
>
> > Sorry if this has an obvious answer, but there is still only limited
> > documentation on clojurescript native interop on the net right now,
> > and none of the code I've seen of runs into this use case...
>
> > How do I create a javascript Date object in Clojurescript? I've tried:
>
> > (Date.)
> > (window/Date.)
> > (.now Date)
>
> > I've run out of ideas for what the correct incantation is- Can someone
> > give me a pointer? Thanks!
>
> After some trial and error, I found this:
>
> ClojureScript:cljs.user> (new js/Date)
> #
> ClojureScript:cljs.user> (js/Date.)
> #
>
> --
> Michael Wood 

-- 
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


Re: Stanford AI Class

2011-08-12 Thread Ken Wesson
On Fri, Aug 12, 2011 at 4:25 PM, daly  wrote:
> Consing up a new function and using eval is certainly possible but
> then you are essentially just working with an interpreter on the data.
>
> How does function invocation actually work in Clojure?
> In Common Lisp you fetch the function slot of the symbol and execute it.
> To modify a function you can (compile (modify-the-source fn)).
> This will change the function slot of the symbol so it will execute the
> new version of itself next time.

As I indicated in the earlier post, consing up a new function and
eval'ing it actually invokes a compiler and generates a dynamic class
with bytecode. It's just as eligible for JIT as a class compiled AOT
and loaded the "usual Java way".

As for your later speculations, whether a history of earlier values is
kept is entirely* up to the programmer. They can keep older versions
around or not. If they stop referencing one, the GC should collect it
at some point (modulo some VM options needed to make unreferenced
classes collectible).

* The STM, as I understand it, may keep a history of the last few
values of a particular ref, if that ref keeps getting involved in
transaction retries. But this history isn't accessible to user code,
at least without doing implementation-dependent things that could
break in future Clojure versions. If you store a lot of big things in
refs, it could impact memory and GC performance though.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Stanford AI Class

2011-08-12 Thread pmbauer
+1

On Friday, August 12, 2011 3:16:15 PM UTC-7, Sergey Didenko wrote:
>
> BTW, Is there a case when AI self-modifying program is much more elegant 
> than AI just-data-modifying program?
>
> I just can't figure out any example when there is a lot of sense to go the 
> self-modifying route.
>

-- 
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

Re: Silly Chat: Clojure, ClojureScript and WebSockets

2011-08-12 Thread Hubert Iwaniuk
Aleph

On Aug 11, 2011, at 11:49 PM, Jimmy wrote:

> Whats handling the serverside websockets connections?
> 
> -- 
> 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 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


Re: Stanford AI Class

2011-08-12 Thread Sergey Didenko
BTW, Is there a case when AI self-modifying program is much more elegant
than AI just-data-modifying program?

I just can't figure out any example when there is a lot of sense to go the
self-modifying route.

-- 
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

Re: Creating global javascript objects (like Date) in Clojurescript

2011-08-12 Thread Michael Wood
On 12 August 2011 23:19, Conrad  wrote:
> Sorry if this has an obvious answer, but there is still only limited
> documentation on clojurescript native interop on the net right now,
> and none of the code I've seen of runs into this use case...
>
> How do I create a javascript Date object in Clojurescript? I've tried:
>
> (Date.)
> (window/Date.)
> (.now Date)
>
> I've run out of ideas for what the correct incantation is- Can someone
> give me a pointer? Thanks!

After some trial and error, I found this:

ClojureScript:cljs.user> (new js/Date)
#
ClojureScript:cljs.user> (js/Date.)
#

-- 
Michael Wood 

-- 
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


Creating global javascript objects (like Date) in Clojurescript

2011-08-12 Thread Conrad
Sorry if this has an obvious answer, but there is still only limited
documentation on clojurescript native interop on the net right now,
and none of the code I've seen of runs into this use case...

How do I create a javascript Date object in Clojurescript? I've tried:

(Date.)
(window/Date.)
(.now Date)

I've run out of ideas for what the correct incantation is- Can someone
give me a pointer? Thanks!

-Conrad Barski

-- 
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


Re: Why are some Google Closure library files not available in Clojurescript?

2011-08-12 Thread Conrad
When I tried that, it still didn't seem to recognize the new
namespaces. My guess is that clojurescript doesn't determine closure
library namespaces dynamically, but has a hardcoded list of them
somewhere (but I never investigated further...)

On Aug 12, 4:35 pm, Daniel Renfer  wrote:
> On Fri, Aug 12, 2011 at 2:34 PM, Conrad  wrote:
> > In case anyone wants to know what the answer is: goog.storage was
> > added with closure library revision 888, but the version used in
> > clojurescript is revision 790. This is because Google hasn't released
> > any pre-packaged versions of the closure library since March.
>
> > On Aug 12, 1:47 pm, Conrad  wrote:
> >> Hi everyone- I'm loving clojurescript and am trying to create a test
> >> app with it. This test app was going to use goog.storage, but for some
> >> reason this library doesn't appear to be available when I install
> >> clojurescript (unlike goog.dom, goog.events, etc. which work fine)
>
> >> You can see this library listed in the Google Closure 
> >> docs:http://closure-library.googlecode.com/svn/docs/index.html
>
> >> For some reason, when I bootstrap clojurescript as per Rich's
> >> instructions this library is missing (i.e. I'm missing the directory
> >> "~/clojurescript/closure/library/closure/goog/storage")
>
> >> One guess I have as to why this is missing is that clojurescript isn't
> >> installing the latest version of the closure library, since
> >> goog.storage appears to be a more recent addition. Does anyone know if
> >> this is the reason for my issue? Is there any way I can safely update
> >> the version of the closure library? If the closure library is out of
> >> date on purpose, does anyone know when support of a more recent
> >> closure library version is planned?
>
> >> Thanks!
>
> >> Conrad Barski
>
> Have you tried updating the closure library? Any problems? I ran into
> a similar issue when I was trying to use their Websocket code. It
> seems that their docs are for the head of the project.
>
> It had me very confused, especially since I was just getting started
> with ClojureScript.

-- 
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


Re: Why are some Google Closure library files not available in Clojurescript?

2011-08-12 Thread Daniel Renfer
On Fri, Aug 12, 2011 at 2:34 PM, Conrad  wrote:
> In case anyone wants to know what the answer is: goog.storage was
> added with closure library revision 888, but the version used in
> clojurescript is revision 790. This is because Google hasn't released
> any pre-packaged versions of the closure library since March.
>
> On Aug 12, 1:47 pm, Conrad  wrote:
>> Hi everyone- I'm loving clojurescript and am trying to create a test
>> app with it. This test app was going to use goog.storage, but for some
>> reason this library doesn't appear to be available when I install
>> clojurescript (unlike goog.dom, goog.events, etc. which work fine)
>>
>> You can see this library listed in the Google Closure 
>> docs:http://closure-library.googlecode.com/svn/docs/index.html
>>
>> For some reason, when I bootstrap clojurescript as per Rich's
>> instructions this library is missing (i.e. I'm missing the directory
>> "~/clojurescript/closure/library/closure/goog/storage")
>>
>> One guess I have as to why this is missing is that clojurescript isn't
>> installing the latest version of the closure library, since
>> goog.storage appears to be a more recent addition. Does anyone know if
>> this is the reason for my issue? Is there any way I can safely update
>> the version of the closure library? If the closure library is out of
>> date on purpose, does anyone know when support of a more recent
>> closure library version is planned?
>>
>> Thanks!
>>
>> Conrad Barski


Have you tried updating the closure library? Any problems? I ran into
a similar issue when I was trying to use their Websocket code. It
seems that their docs are for the head of the project.

It had me very confused, especially since I was just getting started
with ClojureScript.

-- 
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


Re: Stanford AI Class

2011-08-12 Thread daly
On Fri, 2011-08-12 at 13:08 -0400, Ken Wesson wrote:
> On Fri, Aug 12, 2011 at 12:41 PM, daly  wrote:
> > Clojure has immutable data structures.
> > Programs are data structures.
> > Therefore, programs are immutable.
> >
> > So is it possible to create a Clojure program that modifies itself?
> 
> Yes, if it slaps forms together and then executes (eval `(def ~sym
> ~form)) or (eval `(defn ~sym ~argvec ~form)) or similarly, or perhaps
> uses alter-var-root. (May require :dynamic true set for the involved
> Vars in 1.3 for functions and such to start using the new values right
> away -- binding definitely does. In 1.2, alter-var-root should "just
> work". Changes occur as with atom's swap!, so the function passed to
> alter-var-root may potentially execute more than once.)

Consing up a new function and using eval is certainly possible but
then you are essentially just working with an interpreter on the data.

How does function invocation actually work in Clojure?
In Common Lisp you fetch the function slot of the symbol and execute it.
To modify a function you can (compile (modify-the-source fn)).
This will change the function slot of the symbol so it will execute the
new version of itself next time.

Does anyone know the equivalent in Clojure? Would you have to invoke
javac on a file and reload it? The Clojure compile function only seems
to know about files, not in-memory objects.


> 
> Clojure can probably be quite a good AI research and development platform.

Well I'm starting to "prep" for the class by thinking about how to
write a self-modifying function that learns in Clojure.

The mixture of immutability and self-modification would imply that
all of the "old" versions of the function still exist, essentially
forming a set of more primitive versions that could be a interesting
in its own right.

Suppose, for instance, that you did have all of the prior versions.
You could create a "branching learning application". The idea is that
you can have a linear path of learning and then reach back, modify an
old version, and create a second "branch" so now you have two 
different paths of learning. This idea might be very useful. One of
the problems that happens in learning systems is that they "hill climb".
They constantly try to get better. But if you think about "better", it
might mean that you reached a local optimum (a low peak) that cannot
get better. But there might be a better optimum (a higher peak) on some
other path. Branched learning could look back to a lower point, and
choose a second path. If the second path ends up better than the first
then you can abandon the worst path.

Since Clojure has immutable data and data are programs it would seem
that Clojure has a way of doing this "branched learning".

Clojure could certainly bring a couple interesting ideas to the AI
class.

Tim Daly
d...@axiom-developer.org



-- 
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


Re: Erlang/OTP in clojure

2011-08-12 Thread Ole Rixmann
Thanks,
really fast feedback here :)

I would like a vnode in clojure...
In my opinion a lot of the erlang low-level stuff is not needed for
that.

The topology can be definded and shared with a gossip protocol over
http or xmpp.

I think i will spend some time with this,
bye Ole

On 12 Aug., 21:40, "rzeze...@gmail.com"  wrote:
> Ole,
>
> Glad you liked my posts on Riak.  I took a quick glance at your code
> and it's amazing how much Clojure I've forgotten over the last year.
> I need to read my Joy of Clojure :)
>
> If you're looking for Erlang/OTP in Clojure land than I think an
> easier path might be to look at Erjang [1].  AFAICT, it is a fairly
> solid implementation of Erlang/OTP, is in active development, and has
> some really smart devs behind it.
>
> -Ryan
>
> [1]:https://github.com/trifork/erjang/wiki
>
> On Aug 12, 1:32 pm, Ole Rixmann  wrote:
>
>
>
>
>
>
>
> > Hi everyone,
> > i just read this series of posts about riak 
> > corehttps://github.com/rzezeski/try-try-try.
>
> > I liked it (because i did a lot Erlang recently) and wanted to have a
> > similar thing in clojure.
>
> > So i started, although i know i would need years to build such a
> > system on my own, but a gen_server would be nice ;).
>
> > Here is my first approach to a fsm:
>
> > git repo:https://github.com/rixmann/gen_fsm
> > clojars: [org.clojars.owl/gen_fsm "0.1-BETA"]
>
> > If you are interested please tell me what to do better or
> > contribute :-).
>
> > Greetings,
> > Ole

-- 
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


Re: Indexing a nested sequence

2011-08-12 Thread Matt Smith
Using the list comprehension (for) along with a helper function
(index)

(def y (list "#" "#...O" "#.#.#" "I.#.#" "#...#" "#"))

(defn index [s] (map #(vector %1 %2) s (range)))

(defn index-maze [maze-str]
 (reduce conj {}
   (for [r (index maze-str)
 c (index (first r))]
 {[(second r) (second c)] (first c)})))

(index-maze y)


The index function takes a sequence and returns a sequence of vectors
with the value and the index.

(index [:a :b :c])
=> ([:a 0] [:b 1] [:c 2])

A similar function exists in the clojure contrib seq-utils:
http://richhickey.github.com/clojure-contrib/seq-utils-api.html#clojure.contrib.seq-utils/indexed

The for call then uses this index function to create the index for
rows and columns.  Then use reduce to create a map with all the
entries.

On Aug 12, 6:49 am, johanmartinsson 
wrote:
> Hello,
>
> I'm trying to find an elegant way of indexing a two-dimensional sequence
> with the coordinates as keys.
>
> The input is something like.
>
>    (
>
> "#"
>
> "#...O"
>
> "#.#.#"
>
> "I.#.#"
>
> "#...#"
>
> "#")
>
> The midje test below indicates what kind of behaviour I'm looking for. I
> can't come up with a solution that is elegant. I'm sure there are better
> ways to do this, especially in such a sequence oriented language as clojure.
> Would someone please give me a hand here?
>
> (defn- index-maze [str-maze]
>
>   (let [width (count (first str-maze))
>
>         symbols (flatten (map seq str-maze))
>
>         total-size (count symbols)]
>
>     (apply conj
>
>            (for [position (range total-size)
>
>                  :let [row    (quot position width)
>
>                        column (mod position width)
>
>                        sym    (nth symbols position)]]
>
>              {[row column] sym}
>
> (fact
>
>   "makes a map with the coordinates as keys symbols as values"
>
>   (index-maze '("#I#"
>
>                 "#O#")) => (in-any-order {
>
>                                   [0 0] \#
>
>                                   [0 1] \I
>
>                                   [0 2] \#
>
>                                   [1 0] \#
>
>                                   [1 1] \O
>
>                                   [1 2] \#}))
>
> Regards
>
> Johan Martinsson

-- 
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


Re: Indexing a nested sequence

2011-08-12 Thread Jan

> Hello,
> 
> 
> I'm trying to find an elegant way of indexing a two-dimensional sequence 
> with the coordinates as keys. 
> 

If you know width and height you can generate the pattern of coordinates instead
of calculating it:

 (map vector (for [y (range height) x (range width)] y)
 (cycle (range width)))

=> ([0 0] [0 1] [0 2] [1 0] [1 1] [1 2]) ; for height 2, width 3

or if you don't like 'for':

 (map vector (mapcat #(repeat width %) (range height))
 (cycle (range width)))




now combine with a one-dimensional input string:

(zipmap (map vector (for [y (range height) x (range width)] y)
(cycle (range width)))
"#I##O#")


=> {[1 2] \#, [1 1] \O, [1 0] \#, [0 2] \#, [0 1] \I, [0 0] \#}

HTH,

Jan

-- 
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


ClassCastException with contrib replace-first-str

2011-08-12 Thread Marius
Hi,

I found a small bug in Clojure Contrib 1.2.0.

To reproduce:
(require '[clojure.contrib.string :as s])
(s/replace-str "a" "b" "aa")
; "bb" as expected

(s/replace-first-str "a" "b" "aa")
; java.lang.ClassCastException: java.lang.String cannot be cast to
java.util.regex.Pattern

-- 
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


Re: Erlang/OTP in clojure

2011-08-12 Thread rzeze...@gmail.com
Ole,

Glad you liked my posts on Riak.  I took a quick glance at your code
and it's amazing how much Clojure I've forgotten over the last year.
I need to read my Joy of Clojure :)

If you're looking for Erlang/OTP in Clojure land than I think an
easier path might be to look at Erjang [1].  AFAICT, it is a fairly
solid implementation of Erlang/OTP, is in active development, and has
some really smart devs behind it.

-Ryan

[1]: https://github.com/trifork/erjang/wiki

On Aug 12, 1:32 pm, Ole Rixmann  wrote:
> Hi everyone,
> i just read this series of posts about riak 
> corehttps://github.com/rzezeski/try-try-try.
>
> I liked it (because i did a lot Erlang recently) and wanted to have a
> similar thing in clojure.
>
> So i started, although i know i would need years to build such a
> system on my own, but a gen_server would be nice ;).
>
> Here is my first approach to a fsm:
>
> git repo:https://github.com/rixmann/gen_fsm
> clojars: [org.clojars.owl/gen_fsm "0.1-BETA"]
>
> If you are interested please tell me what to do better or
> contribute :-).
>
> Greetings,
> Ole

-- 
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


Clojure/conj 2011 Call For Speakers Ends Soon - Aug 19th!

2011-08-12 Thread Christopher Redinger
Call For Speakers
Clojure/conj 2011
Raleigh, NC
Nov 10-12th, 2011
http://clojure-conj.org

This is a reminder that the Call for Speakers for the second annual 
Clojure/conj is ending soon - August 19th at midnight Eastern to be exact!

We would still love to receive your abstracts for this conference. If you 
have been holding off sending in your talk ideas, now is the time to act.

The current talks that have been proposed can be summarized in the following 
categories:
* Deep dive technical talks
* Real world Clojure uses
* Fundamental concepts.

Certainly, other categories would be welcome.

Speakers will receive:
* Full admission to all three days of the Clojure/conj
* Up to three nights of hotel at the Raleigh Sheraton (the conference hotel)
* A travel stipend
* A catered speakers dinner on Thursday night.

You can find more information about the Clojure/conj including the current 
list of speakers and more information about the call for speakers at 
http://clojure-conj.org.

Hope to see you all in November.

Thanks!

Chris Redinger
Clojure/core
http://clojure.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

Re: Why are some Google Closure library files not available in Clojurescript?

2011-08-12 Thread Conrad
In case anyone wants to know what the answer is: goog.storage was
added with closure library revision 888, but the version used in
clojurescript is revision 790. This is because Google hasn't released
any pre-packaged versions of the closure library since March.

On Aug 12, 1:47 pm, Conrad  wrote:
> Hi everyone- I'm loving clojurescript and am trying to create a test
> app with it. This test app was going to use goog.storage, but for some
> reason this library doesn't appear to be available when I install
> clojurescript (unlike goog.dom, goog.events, etc. which work fine)
>
> You can see this library listed in the Google Closure 
> docs:http://closure-library.googlecode.com/svn/docs/index.html
>
> For some reason, when I bootstrap clojurescript as per Rich's
> instructions this library is missing (i.e. I'm missing the directory
> "~/clojurescript/closure/library/closure/goog/storage")
>
> One guess I have as to why this is missing is that clojurescript isn't
> installing the latest version of the closure library, since
> goog.storage appears to be a more recent addition. Does anyone know if
> this is the reason for my issue? Is there any way I can safely update
> the version of the closure library? If the closure library is out of
> date on purpose, does anyone know when support of a more recent
> closure library version is planned?
>
> Thanks!
>
> Conrad Barski

-- 
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


Erlang/OTP in clojure

2011-08-12 Thread Ole Rixmann
Hi everyone,
i just read this series of posts about riak core 
https://github.com/rzezeski/try-try-try.

I liked it (because i did a lot Erlang recently) and wanted to have a
similar thing in clojure.

So i started, although i know i would need years to build such a
system on my own, but a gen_server would be nice ;).

Here is my first approach to a fsm:

git repo: https://github.com/rixmann/gen_fsm
clojars: [org.clojars.owl/gen_fsm "0.1-BETA"]

If you are interested please tell me what to do better or
contribute :-).

Greetings,
Ole

-- 
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


Indexing a nested sequence

2011-08-12 Thread johanmartinsson
   

Hello,


I'm trying to find an elegant way of indexing a two-dimensional sequence 
with the coordinates as keys. 

The input is something like.

   (

"#"

"#...O"

"#.#.#"

"I.#.#"

"#...#"

"#")


The midje test below indicates what kind of behaviour I'm looking for. I 
can't come up with a solution that is elegant. I'm sure there are better 
ways to do this, especially in such a sequence oriented language as clojure. 
Would someone please give me a hand here?


(defn- index-maze [str-maze] 

  (let [width (count (first str-maze))

symbols (flatten (map seq str-maze))

total-size (count symbols)] 

(apply conj 

   (for [position (range total-size) 

 :let [row(quot position width) 

   column (mod position width)

   sym(nth symbols position)]] 

 {[row column] sym}


(fact

  "makes a map with the coordinates as keys symbols as values"

  (index-maze '("#I#" 

"#O#")) => (in-any-order {

  [0 0] \# 

  [0 1] \I

  [0 2] \#

  [1 0] \#

  [1 1] \O

  [1 2] \#}))


Regards

Johan Martinsson

-- 
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

Re: Silly Chat: Clojure, ClojureScript and WebSockets

2011-08-12 Thread Jimmy
Whats handling the serverside websockets connections?

-- 
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

trying to reach Rich Hickey

2011-08-12 Thread Shriram Krishnamurthi
I'm trying to reach Rich Hickey to invite him to a seminar.  Rich, can
you please reply directly to me?  Thanks.

Shriram

-- 
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


Re: at-at

2011-08-12 Thread Pierre-Yves Ritschard
Shameless plug, but tron provides the same kind of functionality:
https://github.com/pyr/tron

Cheers,
   - pyr
On Wed, Aug 10, 2011 at 7:58 PM, David Nolen  wrote:
> On Wed, Aug 10, 2011 at 1:37 PM, Sam Aaron  wrote:
>>
>> Hi,
>>
>> I just wanted to announce the arrival of the newly-born at-at library -
>> freshly extracted from Overtone:
>>
>> https://github.com/overtone/at-at
>>
>> at-at is an ahead-of-time function scheduler which essentially provides a
>> friendly wrapper around Java's ScheduledThreadPoolExecutor.
>>
>> Enjoy!
>>
>> Sam
>
> Nice!
> David
>
> --
> 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 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


Re: Example of a real-world ClojureScript web application

2011-08-12 Thread Raju Bitter
Thanks for sharing the code with us, Filip. I have one additional
question: Which parts of ClojureScript were documented well enough for
you, and where was it difficult to find enough information on how to
implemented certain features?

Raju

On Aug 10, 11:22 pm, Scott Jaderholm  wrote:
> I haven't read the code yet but I have a few questions:
> Do you miss backbone.js? Are you going to use it with cljs?
> Have you shared any code between the frontend and backend? As in run the
> same functions on both sides. If so, are you duplicating the code in both
> .clj and .cljs or doing something else?
> How has the debugging/error notification experience been?
>
> Scott
>
> On Tue, Aug 9, 2011 at 8:53 PM, Filip de Waard  wrote:
>
>
>
>
>
>
>
> > I'm working on Vix, which is a document repository and content
> > management system written in Clojure with a CouchDB backend. After the
> > announcement on July 23 I immediately got excited about ClojureScript
> > and the Google Closure toolkit, so I dropped the existing Backbone.js
> > and jQuery code and rewrote all client-side functionality in
> > ClojureScript. Despite (or maybe because of) the fact that the
> > functionality is still very minimal I wanted to share this code as an
> > example of ClojureScript in the wild.
>
> > Be warned that:
> > - this is not perfect, clean example code written by a ClojureScript
> > expert (in several places I've used hacks and shortcuts to make things
> > work), but hopefully at least a starting point for others working on
> > similar functionality,
> > - you should read the installation instructions carefully (e.g. there
> > is still a hardcoded path in src/vix/db.clj at the time of this
> > writing, which I hope to correct in the near future),
> > - I'm actively developing this application, so things will change and
> > new features will be added frequently,
> > - the application isn't done yet, although it has a working prototype.
>
> > I'm concentrating on adding features that will allow users to manage
> > feeds (currently "blog" is the default feed), add media files like
> > images and to manage users. I had trouble getting unit testing to work
> > properly for the ClojureScript part of the application, so I
> > grudgingly wrote it using a non-TDD approach. Retrofitting unit tests
> > into the ClojureScript part is a priority. The user interface is also
> > lacking some bells and whistles that I had previously implemented in
> > jQuery, but still have to rewrite using Google Closure. Eventually, I
> > want to turn Vix into a commercial SaaS offering, with a focus on
> > performance (e.g. Amazon CloudFront support), scalability and webshop
> > functionality. The application itself, however, will be perpetually
> > available as open source software, because I'm committed to sharing my
> > code.
>
> > Here is the GitHub page for Vix:https://github.com/fmw/vix
>
> > This is not a "launch post" for Vix, because we're not ready for
> > supporting typical end-users yet, but I hope that the code will be
> > useful to other developers in the meantime. I'm also happy to receive
> > any feedback (positive as well as negative) and answer questions. You
> > can reply to this post, but if you prefer to contact me privately you
> > can also find my contact information on Github (https://github.com/
> > fmw).
>
> > Sincerely,
>
> > F.M. (Filip) de Waard / fmw
>
> > P.S. I'd like to thank the ClojureScript developers. There are
> > surprisingly few glitches considering that the project has only just
> > been released. The language is incredibly well designed and a pleasure
> > to use. Thanks for making client-side development more enjoyable!
>
> > --
> > 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 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


Re: Why are some Google Closure library files not available in Clojurescript?

2011-08-12 Thread Conrad
On further inspection, the latest closure library download doesn't
have this directory either, so the issue I'm having (whatever it is)
is a closure issue, not related to clojurescript. Therefore, it is off-
topic for this forum and I will find my answer elsewhere- Thanks!

On Aug 12, 1:47 pm, Conrad  wrote:
> Hi everyone- I'm loving clojurescript and am trying to create a test
> app with it. This test app was going to use goog.storage, but for some
> reason this library doesn't appear to be available when I install
> clojurescript (unlike goog.dom, goog.events, etc. which work fine)
>
> You can see this library listed in the Google Closure 
> docs:http://closure-library.googlecode.com/svn/docs/index.html
>
> For some reason, when I bootstrap clojurescript as per Rich's
> instructions this library is missing (i.e. I'm missing the directory
> "~/clojurescript/closure/library/closure/goog/storage")
>
> One guess I have as to why this is missing is that clojurescript isn't
> installing the latest version of the closure library, since
> goog.storage appears to be a more recent addition. Does anyone know if
> this is the reason for my issue? Is there any way I can safely update
> the version of the closure library? If the closure library is out of
> date on purpose, does anyone know when support of a more recent
> closure library version is planned?
>
> Thanks!
>
> Conrad Barski

-- 
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


Why are some Google Closure library files not available in Clojurescript?

2011-08-12 Thread Conrad
Hi everyone- I'm loving clojurescript and am trying to create a test
app with it. This test app was going to use goog.storage, but for some
reason this library doesn't appear to be available when I install
clojurescript (unlike goog.dom, goog.events, etc. which work fine)

You can see this library listed in the Google Closure docs:
http://closure-library.googlecode.com/svn/docs/index.html

For some reason, when I bootstrap clojurescript as per Rich's
instructions this library is missing (i.e. I'm missing the directory
"~/clojurescript/closure/library/closure/goog/storage")

One guess I have as to why this is missing is that clojurescript isn't
installing the latest version of the closure library, since
goog.storage appears to be a more recent addition. Does anyone know if
this is the reason for my issue? Is there any way I can safely update
the version of the closure library? If the closure library is out of
date on purpose, does anyone know when support of a more recent
closure library version is planned?

Thanks!

Conrad Barski

-- 
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


Re: Stanford AI Class

2011-08-12 Thread Ken Wesson
On Fri, Aug 12, 2011 at 12:41 PM, daly  wrote:
> Clojure has immutable data structures.
> Programs are data structures.
> Therefore, programs are immutable.
>
> So is it possible to create a Clojure program that modifies itself?

Yes, if it slaps forms together and then executes (eval `(def ~sym
~form)) or (eval `(defn ~sym ~argvec ~form)) or similarly, or perhaps
uses alter-var-root. (May require :dynamic true set for the involved
Vars in 1.3 for functions and such to start using the new values right
away -- binding definitely does. In 1.2, alter-var-root should "just
work". Changes occur as with atom's swap!, so the function passed to
alter-var-root may potentially execute more than once.)

Alternatively, you can create new functions on the fly by evaling fn
forms and use atoms or refs to hold stored procedures in Clojure's
other concurrency-safe mutability containers. These need to be called
by derefing them, e.g. (@some-atom arg1 arg2). The functions will
compile to bytecode and be eligible for JIT the same as ones not
created dynamically at runtime, though the reference lookups carry a
performance hit on invocation.

Clojure can probably be quite a good AI research and development platform.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Stanford AI Class

2011-08-12 Thread daly
Here is an interesting question to ponder...

Learning involves permanent changes of behavior.

In AI this is often modeled as a self-modifying program.
The easiest way to see this would be a program that handles
a rubics cube problem. Initially it only knows some general
rules for manipulation, some measure of progress, and a goal
to achieve.

Each time it solves a cube it can create a new rule that
moves from the starting configuration to the solution in
one "procedure", rather than constantly invoking new rules.
This could be modeled in the data but we are assuming self
modification for the moment.

So we start with a lisp loop that does something like:

(loop
  look at the current cube state
  for each rule, 
 if the condition of the rule matches the cube state
 then apply the rule to update the cube state.
)

This could be written in some form of a huge switch
statement where each case matches a cube state, e.g.

switch (cubestate)

 (GBG RRB GBB ...): rotate upper cube slice 90 degrees clockwise
 (GBG RRR BBY ...): rotate lower cube slice 90 degrees clockwise
 .
 (GGG GGG GGG ...): cube solved

When we solve the cube we remember the sequence of rotations
and add a new rule that matches the starting state followed by
a sequence of rotations:

switch (cubestate)

  (GGB RRW GYY ...): rotate upper cube slice 90 degrees clockwise
 rotate left cube slice 90 degrees clockwise
 
 cube solved
  (GBG RRB GBB ...): rotate upper cube slice 90 degrees clockwise
  (GBG RRR BBY ...): rotate lower cube slice 90 degrees clockwise
   .
  (GGG GGG GGG ...): cube solved; learn new rule; self-modify.

Ok. So now we have an architecture for a simple program that learns
by self-modification. We could get all kinds of clever by applying
special recognizers to combine rotations, find subsequences, etc. 
but lets discuss the self-modification issue in Clojure.

Hmmm. 
Clojure has immutable data structures.
Programs are data structures.
Therefore, programs are immutable.

So is it possible to create a Clojure program that modifies itself?

Tim Daly
d...@axiom-developer.org

 





-- 
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


Re: Nasty java interop problem -- ideas?

2011-08-12 Thread Oskar Kvist
Oh yes, of course. Why didn't I think of that? For some reason,
implementing 2 interfaces never occurred to me. :P

On Aug 12, 4:48 pm, David Powell  wrote:
> > The simplest so far seems to be to use gen-interface to create a
> > subinterface of Controller with all the methods I need, or gen-class.
> > But that would require AOT compilation. Can I get away without it?
>
> Can you use definterface to create an interface with your methods on, and
> then deftype or reify to implement the methods from the Controller type, and
> from your custom interface.
>
> --
> Dave

-- 
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


Re: rebind var for all threads

2011-08-12 Thread Ken Wesson
On Fri, Aug 12, 2011 at 10:17 AM, Stuart Sierra
 wrote:
>> Yes. The compiler probably optimized away the var lookup to an
>> embedded constant. You'll need to use an atom, as Baldridge suggested.
>
> The Clojure compiler doesn't optimize anything away. However, in a situation
> like this:
>
>     (defn foo [x y] ...)
>
>     (def bar (partial foo 1))
>
> The binding of `foo` is resolved when `bar` is defined, and never again
> thereafter. Changing the root binding of `foo` in this case would have no
> effect on `bar`.

That is what I meant, and from what I've heard, in 1.3 this behavior
extends to defn if the Var isn't defined with :dynamic true, that is,
(defn bar [x] (foo x)) will use a "baked-in" value of foo rather than
do a dynamic Var lookup. That's faster, but doesn't allow dynamic
binding to work, and presumably not alter-var-root either.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Nasty java interop problem -- ideas?

2011-08-12 Thread David Powell
>
>
> The simplest so far seems to be to use gen-interface to create a
> subinterface of Controller with all the methods I need, or gen-class.
> But that would require AOT compilation. Can I get away without it?
>

Can you use definterface to create an interface with your methods on, and
then deftype or reify to implement the methods from the Controller type, and
from your custom interface.

-- 
Dave

-- 
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

Nasty java interop problem -- ideas?

2011-08-12 Thread Oskar Kvist
Hi!

I have the following problem. I'm using a Java lib for making GUIs.
One lays out the GUI in XML, then uses a Controller (Listener type
thing) to do stuff. For example, in the XML one might have
onClick="doSomething()". And then reflection is used to find the
method of the controller instance.

But doSomething() is not a method of the interface Controller. The
Controller interface only declares a few very basic methods. So, I
need to pass an object to the GUI that implements Controller, but also
has additional methods.

With proxy, I learend recently, I can not define additional methods,
outside the interface.

What is the most painless way to create an object that implements a
specific interace, but also has additional methods?

The simplest so far seems to be to use gen-interface to create a
subinterface of Controller with all the methods I need, or gen-class.
But that would require AOT compilation. Can I get away without 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


Re: rebind var for all threads

2011-08-12 Thread Stuart Sierra

>
> Yes. The compiler probably optimized away the var lookup to an
> embedded constant. You'll need to use an atom, as Baldridge suggested.
>

The Clojure compiler doesn't optimize anything away. However, in a situation 
like this:

(defn foo [x y] ...)

(def bar (partial foo 1))

The binding of `foo` is resolved when `bar` is defined, and never again 
thereafter. Changing the root binding of `foo` in this case would have no 
effect on `bar`.

-Stuart Sierra
clojure.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

Re: [ANN] Lacij v.0.4.0

2011-08-12 Thread Sam Aaron
Great stuff. I need something like this to visually render the internal design 
of synths in Overtone.

Keep up the great work,

Sam

---
http://sam.aaron.name

On 11 Aug 2011, at 14:02, Pierre Allix wrote:

> Hello,
> 
> I'm pleased to announce the release of the version 0.4.0 of the Lacij
> graph visualization library.
> 
> The release includes a new automatic layout called hierarchical
> layout. It is similar to a tree layout or family tree but works on any
> type of graph (tree or not). An example of this layout can be seen
> here http://minus.com/ll9M1g it is a PNG exported from the generated
> SVG. The release also extends the API and fixes a couple of bugs.
> 
> The library is available on GitHub:
> https://github.com/pallix/lacij
> 
> and Clojars:
> http://clojars.org/lacij
> 
> 
> Please get in touch if you want to help the Lacij project and
> implement additional layouts algorithms.
> 
> From the README:
> Lacij is a graph visualization library written in Clojure. It allows
> the display and the dynamic modification of graphs as SVG documents
> that can be viewed with a Web browser or with a Swing component. Undo/
> redo is supported for the dynamic modification. Automatic layout is
> provided for the visualization.
> 
> -- 
> 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 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


Re: rebind var for all threads

2011-08-12 Thread Ken Wesson
On Fri, Aug 12, 2011 at 12:36 AM, Sean Corfield  wrote:
> On Thu, Aug 11, 2011 at 6:48 PM, Ken Wesson  wrote:
>>
>> Eh. I now can't seem to actually find any recent post mentioning both
>> it and Android. But mentioning it in connection with Google's app
>> store is another matter.
>
> There is no "Google App Store".
> There is an "Android Market" which is where you get mobile apps for Android
> devices: https://market.android.com/
> There is "Google Apps" which is their "web-based email, calendar and
> documents for teams": http://www.google.com/apps/
> Then there's "Google App Engine" which is their elastic cloud service
> supporting Python and Java web applications (with some class restrictions):
> http://www.google.com/enterprise/cloud/appengine/
> Hope that helps clarify this thread's subject matter...

That is odd. Google is usually much better about clearly naming
things, but here they've more or less got things backwards relative to
smartphone industry leader Apple.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
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


Re: Example of a real-world ClojureScript web application

2011-08-12 Thread Timothy Washington
I was able to get Jasmine tests running in the browser. You really just have
to follow the pattern in
Quickstart,
and good.require the needed namespaces. I imagine Google Closure's testing
lib
will
work in the same way. I'll let you know how far I get with automated testing
in a nodejs shell.


Tim Washington
twash...@gmail.com
416.843.9060



On Thu, Aug 11, 2011 at 2:20 AM, Filip de Waard  wrote:

> On Thu, Aug 11, 2011 at 4:03 AM, Timothy Washington wrote:
>
>> Good on you. I've been looking to find a reliable way to have Javascript
>> unit testing run in a v8 (or any JS) shell. I've tried Jasmine and am now
>> trying Google Closure's unit testing framework, but have so far come up
>> short.
>>
>>
>>
>> Have you come up with anything that works? For now, i'm just having the
>> tests run in the browser. But trying with Nodejs is the next step.
>>
>>
>> I don't have it at hand, right now, because I'm not at home, but I think
> the Google Closure book suggests using Selenium to automatically run the
> tests. Alternatively, using script/repljs might work. Do you have the tests
> running a browser window already? If so, I'd love to have a look at how you
> did that, because I haven't gotten that far yet myself. I'm going to give
> this another shot soon, because I've learned quite a lot about ClojureScript
> since I last tried to get testing to work.
>
> -fmw
>
>> Keep it up
>>
>> Tim
>>
>>
>>
>> On Tue, Aug 9, 2011 at 8:53 PM, Filip de Waard  wrote:
>>
>>>  I'm working on Vix, which is a document repository and content
>>> management system written in Clojure with a CouchDB backend. After the
>>> announcement on July 23 I immediately got excited about ClojureScript
>>> and the Google Closure toolkit, so I dropped the existing Backbone.js
>>> and jQuery code and rewrote all client-side functionality in
>>> ClojureScript. Despite (or maybe because of) the fact that the
>>> functionality is still very minimal I wanted to share this code as an
>>> example of ClojureScript in the wild.
>>>
>>> Be warned that:
>>> - this is not perfect, clean example code written by a ClojureScript
>>> expert (in several places I've used hacks and shortcuts to make things
>>> work), but hopefully at least a starting point for others working on
>>> similar functionality,
>>> - you should read the installation instructions carefully (e.g. there
>>> is still a hardcoded path in src/vix/db.clj at the time of this
>>> writing, which I hope to correct in the near future),
>>> - I'm actively developing this application, so things will change and
>>> new features will be added frequently,
>>> - the application isn't done yet, although it has a working prototype.
>>>
>>> I'm concentrating on adding features that will allow users to manage
>>> feeds (currently "blog" is the default feed), add media files like
>>> images and to manage users. I had trouble getting unit testing to work
>>> properly for the ClojureScript part of the application, so I
>>> grudgingly wrote it using a non-TDD approach. Retrofitting unit tests
>>> into the ClojureScript part is a priority. The user interface is also
>>> lacking some bells and whistles that I had previously implemented in
>>> jQuery, but still have to rewrite using Google Closure. Eventually, I
>>> want to turn Vix into a commercial SaaS offering, with a focus on
>>> performance (e.g. Amazon CloudFront support), scalability and webshop
>>> functionality. The application itself, however, will be perpetually
>>> available as open source software, because I'm committed to sharing my
>>> code.
>>>
>>> Here is the GitHub page for Vix: https://github.com/fmw/vix
>>>
>>> This is not a "launch post" for Vix, because we're not ready for
>>> supporting typical end-users yet, but I hope that the code will be
>>> useful to other developers in the meantime. I'm also happy to receive
>>> any feedback (positive as well as negative) and answer questions. You
>>> can reply to this post, but if you prefer to contact me privately you
>>> can also find my contact information on Github (https://github.com/
>>> fmw).
>>>
>>> Sincerely,
>>>
>>> F.M. (Filip) de Waard / fmw
>>>
>>> P.S. I'd like to thank the ClojureScript developers. There are
>>> surprisingly few glitches considering that the project has only just
>>> been released. The language is incredibly well designed and a pleasure
>>> to use. Thanks for making client-side development more enjoyable!
>>>
>>> --
>>> 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/

Re: rebind var for all threads

2011-08-12 Thread Michael Wood
On 12 August 2011 06:36, Sean Corfield  wrote:
> On Thu, Aug 11, 2011 at 6:48 PM, Ken Wesson  wrote:
>>
>> Eh. I now can't seem to actually find any recent post mentioning both
>> it and Android. But mentioning it in connection with Google's app
>> store is another matter.
>
> There is no "Google App Store".
>
> There is an "Android Market" which is where you get mobile apps for Android
> devices: https://market.android.com/
>
> There is "Google Apps" which is their "web-based email, calendar and
> documents for teams": http://www.google.com/apps/
>
> Then there's "Google App Engine" which is their elastic cloud service
> supporting Python and Java web applications (with some class restrictions):
> http://www.google.com/enterprise/cloud/appengine/
>
> Hope that helps clarify this thread's subject matter...

Don't forget App Inventor (which is going away).

-- 
Michael Wood 

-- 
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