Or: f=: [: *: <: #~ 2 | ] f i.12 0 4 16 36 64 100
Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Aai Sent: Saturday, December 27, 2014 12:32 PM To: programm...@jsoftware.com Subject: Re: [Jprogramming] "Such that" syntax in J Ok, I misinterpreted this enormously (I was just focused on the Haslell expression you started with). It would be nice if you could illustrate your last mail with an example in Haskell (but that's specifically for me). You started with the Haskell expression [ f x | x <- xs ] and described that as follows which means "the list of all f x such that x is drawn from xs." But in my opion it is more like: Apply function f on all x element of the list xs and of course f can be a very complex expression. As I said before this is often expressed with the higher order function map. Jon Hough schreef op 27-12-14 om 16:01: > Hi Aai, > > I'm sorry, we may be talking past each other. You are correct abut list comprehensions, but I am interested in being able to get a "such that" idea in J, to make translating math definitions {A | B} (A such that B) into computable J. > > This isn't to make anything computationally faster or anytihng like that, it's for the ease of the human to understand what the conditions for creating a set (or list or array ) is. > > As a simple example, the group C4 (cyclic group on 4 letters) is > 0 1 2 3 > 1 2 3 0 > 2 3 0 1 > 3 0 1 2 > (where each row is a permutation) > This group can be defined (in standard math notation, not J) as > > < x | order(x) == 4> > where angle brackets replace curly brackets to denote "generated by". That is, we get the set of permutations generated by a permutation of order 4. > > I'm sure there are several ways to get this set in J, but the one I am interested in needs some sort of "such that" clause to keep it as close as possible to the mathematical notation. > > So I can do: > > > > x =: (sym 4) where (4&=@:order)This gives a set of permutations from Sym 4 that have order 4. I just want one. > generatorList =: 2 4 $ ((i. 4) , {. x) I take the head of the list and > append the identity permutation to it and then use generate > generatorList which should give me the Cyclic group on 4 > letters.(where "generate" is the verb m35 found here > http://www.jsoftware.com/phrases/permutations.htm ) This actually works well I think, because it gives a flexible way to change the conditional clause and create different sets, groups. > > > > >> Date: Sat, 27 Dec 2014 15:44:10 +0100 >> From: agroeneveld...@gmail.com >> To: programm...@jsoftware.com >> Subject: Re: [Jprogramming] "Such that" syntax in J >> >> Hello John, >> >> just interpreting what you mean (but I may misunderstand it completely). >> With a list comprehension you can formulate: >> (just a simple example) >> >> Prelude> take 6 $ [ (^2) x | x <- [0..], 0 == x `mod` 2] >> [0,4,16,36,64,100] >> >> In J: >> >> (*:#~0=2&|) i.12 >> 0 4 16 36 64 100 >> >> Perhaps something like this? >> >> >> Jon Hough schreef op 27-12-14 om 15:26: >>> Hi Aai, >>> >>> I see what you are saying, but I would say that implicitly inside f there is some sort of "such that" syntax. >>> My motivation for asking for a "such that / where" construct is to create computable math definitions, as in Haskell. >>> >>> for example, if I want the set (or group): >>> >>> { x e. Sym(4) | order(x) = 4} (where Sym(4) is the symmetric group >>> on 4 letters) >>> >>> then, assuming I have a verb "sym" and a verb "order" I can do >>> >>> >>> (sym 4) where (4&=@:order) >>> Then it may just be possible to generate groups from group >>> presentations ( >>> http://en.wikipedia.org/wiki/Presentation_of_a_group)(I haven't >>> figured out how to do this, I am just thinking about it over the >>> holidays) >>> >>>> Date: Sat, 27 Dec 2014 08:46:12 +0100 >>>> From: agroeneveld...@gmail.com >>>> To: programm...@jsoftware.com >>>> Subject: Re: [Jprogramming] "Such that" syntax in J >>>> >>>> Sorry for jumping in late. >>>> >>>> The Haskell expression you showed here is called a list >>>> comprehansion which can be easily formulated as >>>> >>>> map f xs >>>> >>>> and this is in J simply: >>>> >>>> f xs >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> Jon Hough schreef op 26-12-14 om 17:04: >>>>> In Haskell (and other languages I'm sure) one can express the idea of "such that" to denote one expression depending on another. In Haskell we can use the syntax: >>>>> >>>>> [ f x | x <- xs ] >>>>> >>>>> which means >>>>> "the list of all f x >>>>> such that x is drawn from xs." >>>>> >>>>> So | is syntactically similar to the English "such that". (and >>>>> very much like | in mathematical sets) >>>>> >>>>> I would like to know if J has a construct to express the above Haskell code. >>>>> >>>>> Thanks, >>>>> Jon. >>>>> >>>>> ------------------------------------------------------------------ >>>>> ---- For information about J forums see >>>>> http://www.jsoftware.com/forums.htm >>>> -- >>>> Met vriendelijke groet, >>>> @@i = Arie Groeneveld >>>> >>>> ------------------------------------------------------------------- >>>> --- For information about J forums see >>>> http://www.jsoftware.com/forums.htm >>> >>> -------------------------------------------------------------------- >>> -- For information about J forums see >>> http://www.jsoftware.com/forums.htm >> -- >> Met vriendelijke groet, >> @@i = Arie Groeneveld >> >> --------------------------------------------------------------------- >> - For information about J forums see >> http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- Met vriendelijke groet, @@i = Arie Groeneveld ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm