Hi Colin,

Cheers. I had exactly the same problem, so I've been trying out a few other
ideas. One is to use datalog (or cascalog etc) and represent "objects" with
entities and relationships between objects with refs (for datalog). I have
some enormous data structures (2-300m synapses per layer, for example) but
I find that Datomic and datalog are great for modelling really big and
complex structures.

There's a datomic wrapper library called adi [1] which adds a nice map-like
interface on top of datalog. It's perfect for getting your schema right
(you start off with a big map and it automagically does the schema), and
you can do some really long link-following, but I'm not using it
extensively yet (because everything is data, you can use adi for schema
design and some queries, and raw datomic for the rest).

I'll be writing extensively about each library or tool I've used on my blog
(see sig). I'm writing about lein-midje-doc (also by zcaudate) at the
moment, it's just wonderful.

[1] https://github.com/zcaudate/adi

Regards,

Fergal Byrne


On Wed, Apr 9, 2014 at 12:22 PM, Colin Yates <colin.ya...@gmail.com> wrote:

> Hi Fergal,
>
> Thanks for those links.  I started using protocols and defrecords but I
> (maybe mistakenly) got the impression that they were "frowned upon".  As it
> turns out, maps (typically with a :type key) and multi methods go a long
> long way, but I still end up with fairly deep nesting of maps.
>
> Maybe that is the key - deep nesting of maps maybe cries out "one object
> [data model] to rule them all" and I need to decompose it further.
>
> Without types almost all the type hints would be either the map of
> sequence interface.  It isn't so much the structure that is obscure, but
> the semantics of what that structure is modelling.
>
> As I hinted at, I am sure it is because my implementation model is still
> influenced too much by my OO background.
>
> Onwards and upwards as they say.
>
> Col
>
>
> On Wednesday, 9 April 2014 11:37:52 UTC+1, Fergal Byrne wrote:
>
>> Hi Anthony,
>>
>> I'm building a fairly large real-world system called Clortex [1], which
>> is a rewrite of the Numenta Platform for Intelligent Computing (NuPIC) [2].
>> As it's a greenfield project, I've chosen to use Clojure components all the
>> way through instead of fitting in with Java-based or .Net-based frameworks.
>> There are good reasons why you should do this if you can, but obviously
>> that doesn't help you directly with your question.
>>
>> There are many people introducing Clojure as a component in an existing
>> ecosystem, as Colin explains, but usually this is done deep inside a big
>> Java or .Net shop, and they're not showing the world the code. One possible
>> route would be to see if any of the big Java or CLR Open Source apps are
>> looking at doing some subsystems in Clojure.
>>
>> Colin,
>>
>> Great to hear your experiences. I'm no expert, but it's likely that you
>> could ease much of the pain using protocols, type hints and deftypes or
>> records. Also, Typed Clojure [3] is definitely worth looking at.
>>
>> [1] Clortex will be public on Github shortly, see
>> http://fergalbyrne.github.io for docs, http://inbits.com for blog.
>>  [2] http://numenta.org
>> [3] https://github.com/clojure/core.typed
>>
>> Regards,
>>
>> Fergal Byrne
>>
>>
>>
>>
>> On Wed, Apr 9, 2014 at 10:18 AM, Aditya Athalye <aditya....@gmail.com>wrote:
>>
>>> Welcome, Anthony.
>>>
>>> I'm not aware of complete applications that fit your requirement,
>>> however I think you'll find value in the newly-minted Clojure Cookbook
>>> http://clojure-cookbook.com/ ... many, many examples of real-world
>>> problems,
>>> across domains, solved by Clojure practitioners.
>>>
>>> All the examples and solutions are available here:
>>> https://github.com/clojure-cookbook/clojure-cookbook
>>>
>>> Cheers, and once again, welcome!
>>>
>>>
>>>
>>> On Wednesday, April 9, 2014 12:53:06 AM UTC+5:30, Anthony Ortiz wrote:
>>>>
>>>> Hello world!
>>>>
>>>> I'm a C# developer who recently went to an interview at a major bank
>>>> here in NYC and found that they've been using Clojure for their business
>>>> logic for over a year already and that got me curious, so I find myself on
>>>> unfamiliar territory learning how to program in a functional language. So
>>>> far so good, Moxley Stratton's online tutorial combined with Try Clojure
>>>> (the online interpreter) has been very helpful (kudos to you guys!) and I'm
>>>> now going through the book 'Programming Clojure'. So far I've seen a lot of
>>>> utility/academic examples such as fibonacci but little in the way of an
>>>> actual real-world example of a top-to-bottom desktop application built
>>>> using Clojure on either the JVM or CLR, something simple that would
>>>> demonstrate how Clojure fits into the event-driven model on the client-side
>>>> behind, let's say, WPF, and how it would interact with more Clojure on the
>>>> service-side via, let's say, WCF. Does anyone know of an example they can
>>>> direct me to?
>>>>
>>>> Many thanks!
>>>>
>>>> Anthony
>>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>>
>> Fergal Byrne, Brenter IT
>>
>> Author, Real Machine Intelligence with Clortex and NuPIC
>> https://leanpub.com/realsmartmachines
>>
>> <http://www.examsupport.ie>http://inbits.com - Better Living through
>> Thoughtful Technology
>> http://ie.linkedin.com/in/fergbyrne/
>> https://github.com/fergalbyrne
>>
>> e:fergalby...@gmail.com t:+353 83 4214179
>> Formerly of Adnet edi...@adnet.ie http://www.adnet.ie
>>
>  --
> 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.
>



-- 

Fergal Byrne, Brenter IT

Author, Real Machine Intelligence with Clortex and NuPIC
https://leanpub.com/realsmartmachines

<http://www.examsupport.ie>http://inbits.com - Better Living through
Thoughtful Technology
http://ie.linkedin.com/in/fergbyrne/
https://github.com/fergalbyrne

e:fergalbyrnedub...@gmail.com t:+353 83 4214179
Formerly of Adnet edi...@adnet.ie http://www.adnet.ie

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

Reply via email to