Can this be used in clojurescript?

It looks like yes

But, taking the given clj example, my first question is how can I extend a 
protocol to the equivalent of IPersistentMap. Given that maps in 
clojurescript are protocols, this seems harder.

D


On Wednesday, 11 July 2012 16:52:47 UTC+10, Leif wrote:
>
> Thanks!
>
> The similarity is no accident: When you consider it, 'isa?' is a 
> generalized subtyping relation:
>
> (isa? Double Number) ==> Double <: Number
> (isa? ::goat ::animal) ==> ::goat <: ::animal
> (isa? 1 x) ==> #{1} <: x, which makes sense if you define the value x to 
> mean "the set of all things equivalent to x"
>
> Specifically for the keyword case, clojure.core lets you define ad hoc 
> hierarchies, which you could view as type lattices.  This project  lets you 
> define ad hoc type lattice relations.
>
> You might be interested in the papers on LIFE.  They define "sorts" for 
> logic terms (very much like types), and an algorithm for unifying two terms 
> (which can be quite a bit more complicated than Prolog terms).
>
> On Wednesday, July 11, 2012 2:22:51 AM UTC-4, Ambrose Bonnaire-Sergeant 
> wrote:
>>
>> This is cool :)
>>
>> It reminds me of subtyping between maps in Typed Clojure, where
>>
>> {:a 1, :b 2} <: {:a Number}
>>
>> Thanks,
>> Ambrose
>>
>> On Wed, Jul 11, 2012 at 2:16 PM, Leif <leif.poor...@gmail.com> wrote:
>>
>>> Hi, everybody.  I reimplemented the function isa? in terms of a protocol 
>>> Is-A.
>>>
>>> The reason why you would want to do that is in the README at 
>>> https://github.com/leifp/clj-isa-protocol
>>>
>>> tl;dr:  One of the reasons why people are excited about predicate 
>>> dispatch is the irritation caused by the dispatch function of a multimethod 
>>> being closed.  You have to decide up front what information the dispatch fn 
>>> is going to pull out of your arguments.  Changing it afterward is a pain.
>>>
>>> Since the dispatch uses 'isa?' internally, if that function is 
>>> extensible, then multimethod dispatch becomes, to a certain extent, open.  
>>> See the README.
>>>
>>> Comments, critique, code, and questions welcome.
>>>
>>> Cheers,
>>> Leif
>>>
>>> P.S.  As an aside to people that like weird, obscure programming 
>>> languages, the rough idea of how is-a? should work for maps was inspired by 
>>> (but very much simpler than) the functional logic language LIFE [ 
>>> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.90.3175 ]
>>>
>>> -- 
>>> 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

Reply via email to