On Fri, Apr 25, 2014 at 7:44 PM, Raul Miller <rauldmil...@gmail.com> wrote:

> On Fri, Apr 25, 2014 at 5:31 PM, Joe Bogner <joebog...@gmail.com> wrote:
>
> > So I can generate a string and evaluate it, but is there a better way
> than
> > evaluating the string?
> >
>
> Here are some options:
>
> ". (or do - the advantage of do being that it's a name so you can specify
> which locale to use).
>
>
My goal is to define a list of helper verbs for each column in the table.

I used ". in my last version. It was somewhat cryptic, so here it is again
with more details:

cols=: 'FName';'LName';'Age';'Company'

] vars=:('`',(, > (],&'_eq ') each cols))

`FName_eq LName_eq Age_eq Company_eq



] verbs=:". }. ,> ('`',[) each ('((= ' , ') # ])' ,~ ]) each cols



┌───────────────────────┬───────────────────────┬─────────────────────┬─────────────────────────┐

│┌─┬───────────────────┐│┌─┬───────────────────┐│┌─┬─────────────────┐│┌─┬─────────────────────┐│

││3│┌─────────────┬─┬─┐│││3│┌─────────────┬─┬─┐│││3│┌───────────┬─┬─┐│││3│┌───────────────┬─┬─┐││

││ ││┌─┬─────────┐│#│]││││ ││┌─┬─────────┐│#│]││││ ││┌─┬───────┐│#│]││││
││┌─┬───────────┐│#│]│││

││ │││2│┌─┬─────┐││ │ ││││ │││2│┌─┬─────┐││ │ ││││ │││2│┌─┬───┐││ │ ││││
│││2│┌─┬───────┐││ │ │││

││ │││ ││=│FName│││ │ ││││ │││ ││=│LName│││ │ ││││ │││ ││=│Age│││ │ ││││
│││ ││=│Company│││ │ │││

││ │││ │└─┴─────┘││ │ ││││ │││ │└─┴─────┘││ │ ││││ │││ │└─┴───┘││ │ ││││
│││ │└─┴───────┘││ │ │││

││ ││└─┴─────────┘│ │ ││││ ││└─┴─────────┘│ │ ││││ ││└─┴───────┘│ │ ││││
││└─┴───────────┘│ │ │││

││ │└─────────────┴─┴─┘│││ │└─────────────┴─┴─┘│││ │└───────────┴─┴─┘│││
│└───────────────┴─┴─┘││

│└─┴───────────────────┘│└─┴───────────────────┘│└─┴─────────────────┘│└─┴─────────────────────┘│


└───────────────────────┴───────────────────────┴─────────────────────┴─────────────────────────┘



(I don't know how to paste this better)


(vars)=:verbs


FName_eq


(= FName) # ]



I can now execute statements like this: (<'John') FName_eq (<'Acme')
Company_eq data


This works fine, but I wanted to get input on it vs other other approaches.



More specifically, you used this:


colN=:3 : 0
  {.y&{"1`''
)
'`FName LName Age Company'=: colN"0 i.4


I don't quite understand how it works and I was wondering if it's better
than using Do. I don't know how to have a verb return a train of verbs for
a gerund. I may be using the wrong terminology.

[colN"0 i.1

┌─────────────────────────┐

│┌─┬─────────────────────┐│

││"│┌─────────────┬─────┐││

││ ││┌─┬─────────┐│┌─┬─┐│││

││ │││&│┌─────┬─┐│││0│1││││

││ │││ ││┌─┬─┐│{│││└─┴─┘│││

││ │││ │││0│0││ │││ │││

││ │││ ││└─┴─┘│ │││ │││

││ │││ │└─────┴─┘││ │││

││ ││└─┴─────────┘│ │││

││ │└─────────────┴─────┘││

│└─┴─────────────────────┘│

└─────────────────────────┘



I can come reasonable close, but not the final mile. No big deal if Do. is
good enough, since it works


'`FName_eq LName_eq' =: (3 : '=&y` '''' ' ) each 'FName';'LName'


FName_eq


=&'FName'



I would ideally like something like this (I think), assuming this better
than do:


'`FName_eq LName_eq' =:(3 :'(= y) #]` '''' ')each'FName';'LName'

|length error

| (=y) #]`''


But again, I don't really understand what it's doing with the verb
returning a strange form that somewhat appears to be a gerund
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to