I made a higher level conversion tool a while back:  
https://github.com/Pascal-J/type-system-j

in terms of converting gerunds and linear,  I made a "linear boxed" format 
somewhat equivalent to gerunds, but easier to manipulate.

eval_z_ =: 1 : ' a: 1 :  m'
lrA_z_ =: 1 : '5!:5 < ''u'''
ncS=:3 :'z=.y 1 :y label_. 4!:0 <''z'' ' :: _2: NB. nameclass of string
ismodstring =: 1 : 'if. 0 = 4!:0 <''u'' do. try. q =.  m eval catch. 0 return. 
end. 1 2 e.~ 4!:0 <''q''else. 0 end. '

daF =: 1 : ('a =. (''2 : '', (quote m) , '' u'') label_. 1 : (''u  1 :'' , 
quote a)')

ncA =: 1 : 'if. 3 ~: 4!:0 < ''u'' do. if. m ismodstring do. m ; ncS m else. 0 
;~ ''('', m lrA ,'')'' end. else. 3;~ ''('', u lrA ,'')'' end.'

tieB =: 'if. (0 -.@-: 1{:: a =. v ncA)  do. n =. ,: a end.  u ncA,n' daF NB. 
can put nouns as long as not last element. or code it with ncA


lrB =: 1 : ',: u ncA'


its part of a larger framework for strand adverbs, but strings that are 
modifiers get coded as modifiers.


'@' 3 lrB tieB 
┌───┬─┐
│@  │2│
├───┼─┤
│(3)│0│
└───┴─┘

I don't remember if I posted these before, but I also made some utilities to 
make an ar representation from "anything", and convert lrB format to gerunds.



toG =: 1 : ' if. 1 2 e.~ 1 {:: u ncA do. a =. (m) eval else. a=.u end. 5!:1 < 
''a''' NB.makes gerund from anything. turning string modifiers into gerund 
versions. 

arS =: 1 : '". every ,&'' toG'' each  quote^:('')'' ~: {:) each m'

v2a =: 1 : ( 'a =. (''('' , u lrA ,'') m '') label_. 1 : (''m  1 :'' , quote 
a)')

'asf' '/\' +:@+ % tieB tieB tieB {."1 v2a arS
+-------+---------+----------+-+
|+-+---+|+-+-----+|+-+------+|%|
||0|asf|||4|+-+-+|||@|+--+-+|| |
|+-+---+|| ||/|\|||| ||+:|+||| |
|       || |+-+-+||| |+--+-+|| |
|       |+-+-----+|+-+------+| |
+-------+---------+----------+-+

'/\' toG
+---------+
|+-+-----+|
||4|+-+-+||
|| ||/|\|||
|| |+-+-+||
|+-+-----+|
+---------+

3 toG
+-----+
|+-+-+|
||0|3||
|+-+-+|
+-----+


----- Original Message -----
From: Marshall Lochbaum <[email protected]>
To: [email protected]
Sent: Saturday, February 6, 2016 4:38 PM
Subject: [Jprogramming] Type conversion tool

Based on the recent discussions about integers and floats, I decided to
make a general tool to convert between various J types. It's hosted
here:

https://github.com/mlochbaum/JScripts/blob/master/Misc/typecast.ijs

The script defines typecast, a verb to convert between types while
maintaining J equivalence (-:), and numcast, a verb which converts
between numeric types and guarantees no errors. Both of these operations
are quite error-prone, so it's good to have a reference with (lightly,
at the moment) tested verbs to perform them.

My goal is to eventually have a glossary of ways to convert between
types. I will probably make typecast suggest alternative conversion
methods if it fails on a particular argument. So I'm curious if anyone
knows of interesting and useful ways to convert types. The ones I know
of are:

- Conversions (3!:x) from numbers to bytes
- (0&~:) to convert numbers to booleans
- (mod 2^64) conversion from exact to 64-bit integer
- Representations (5!:x) from nouns (or other parts of speech) to
  strings or boxes.
- Gerund representation for a verb
- The sneaky trick which boxes a part of speech directly

Any others?

Marshall
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to