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