'testfile.txt' fwrite~3!:1 'Hello World!';(i.3 4);<2 1$'Text Here';1 2 3 4

456

3!:2 fread 'testfile.txt'

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

│Hello World!│0 1 2 3│┌─────────┐│

│ │4 5 6 7││Text Here││

│ │8 9 10 11│├─────────┤│

│ │ ││1 2 3 4 ││

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

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

On Thu, Feb 2, 2023 at 2:19 PM Ak O <akin...@gmail.com> wrote:

> In this case the data is an array of boxes.
> The datatype is 'boxe'd.
> The data is of some shape.
>
> These things have to be preserved in order to correctly restore them
> later. (at some cost,  up-front to specify them,  afterwards to recall the
> specifics, or something else) It might be easy to write as literal, but
> reverting  back can present some challenges.
>
> For example:
> ary=: 'abcd';4 5 6 7; 2 2 $ 8.9 7.6 .6.5 5.4
>
>      datatype ary
> boxed
>
>      datatype ":ary
> literal
> ***Danger***
>      $ary     NB. An array of structures that preserves operational
> intention.
> 3
>      $":ary   NB. An array whose structure is different than its
> operational intention.
> 4 22
>
> These are different and need to be accounted for.
>
>      datatype (>0{ary)
> literal
>
>      datatype (>1{ary)
> Integer
>
>      datatype (>2{ary)
> floating
>
>
> Each unit has a shape and a type to preserve.
>
> If I want to operate on this object with the meaning intended for it when
> it was created, many errors can be avoided when unnecessary intermediate
> conversions are avoided.
>
> Jmf allows you to operate directly without having the need to
> revert from literal to your operation/operand, datatype (with the
> associated overhead and tracking).I am not saying that there is no overhead
> with jmf, just that the cognitive load is offset or preset because jmf
> treats it for the user.
>
>
> (1!2 & 1!:/, fwrite , fread) forms.
> 1. Convert to literal.
> 2. Write literal to file.
> 3. Read literal from file.
> 4. Convert literal type to operation type
> 5. Operate with type.
> End
> ___
>
> jmf form.
> 1. Create jmf file.
> 2. Map jmf file.
> 3. Operate with file.
> End
>
>
> I am interested in understanding better how the best performance is
> achieved comparing these forms.
>
> Thoughts.
>
>
> Ak
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> On Thu., Feb. 2, 2023, 07:51 bill lam, <bbill....@gmail.com> wrote:
>
> > Using Jmf is overkill. Also what are the advantages of jmf over 3!:1/3!:2
> > in this case?
> >
> > On Thu, 2 Feb 2023 at 7:17 PM Ak O <akin...@gmail.com> wrote:
> >
> > >      load 'jmf'
> > > NB. Loads jmf facilities.
> > >
> > >      testfile =: {2,\?50#75
> > >
> > >      fn =: jpath 'C:\Users\skip\J904-user\temp\foo\testfile_name.jmf'
> > > NB. Links a covername to the file path.
> > >      createjmf_jmf_ fn;(([:(*&8)#);testfile)
> > > NB. Create the container for your file.
> > > NB. -fn is your reference name
> > > NB. -(([:(*&8)#);testfile) allocates the size of yor fike in bytes
> > >
> > >      map_jmf_ 'testfile_disk';fn
> > > NB. Maps the file to a noun 'testfile_disk'
> > >      ] testfile_disk_jmf_ =: testfile
> > >
> > >      unmap_jmf 'testfile_disk_jmf_'
> > > NB. Release mappings
> > > Or
> > > Exit 0
> > > Close session.
> > >
> > >
> > > New session.
> > >
> > >      load 'jmf'
> > >      fn =:  jpath 'C:\Users\skip\J904-user\temp\foo\testfile_name.jmf'
> > >      map_jmf_ 'testfile1';fn
> > > NB. Map file
> > >      ] testfile1_jmf_
> > > NB. File loaded as noun 'testfile1_jmf_'
> > >
> > > Some potential benefits of the .jmf datatype:
> > > -Preserves header and shape information.
> > > -If you want to map you file as read only, use the following syntax
> > > map_jmf_ 'testfile1';fn;'';1
> > > -If you would like it to be copy-on-write use the following syntax
> > > map_jmf_ 'testfile1';fn;'';2
> > >
> > >
> > > Ak
> > >
> > > On Wed., Feb. 1, 2023, 21:48 'Skip Cave' via Programming, <
> > > programm...@jsoftware.com> wrote:
> > >
> > > > I have a boxed noun:
> > > >
> > > > ] testfile =: {2,\?15#50
> > > >
> > > >
> > > >
> > >
> >
> ┌────┬─────┬─────┬─────┬─────┬─────┬────┬────┬────┬────┬─────┬────┬───┬────┐
> > > >
> > > > │9 21│21 47│47 37│37 13│13 33│33 20│20 4│4 49│49 6│6 25│25 33│33 9│9
> > 6│6
> > > > 43│
> > > >
> > > >
> > > >
> > >
> >
> └────┴─────┴─────┴─────┴─────┴─────┴────┴────┴────┴────┴─────┴────┴───┴────┘
> > > >
> > > >
> > > > I want to store it in the following location on my machine:
> > > >
> > > >
> > > > ]fn =. < 'C:\Users\skip\J904-user\temp'
> > > >
> > > > ┌────────────────────────────┐
> > > >
> > > > │C:\Users\skip\J904-user\temp│
> > > >
> > > > └────────────────────────────┘
> > > >
> > > > Then I will close that J session.
> > > >
> > > >
> > > > Later, I will start a new J session, and I want to read that saved
> file
> > > > into a noun called 'test1'
> > > >
> > > >
> > > > What is the J code for writing the noun into a file in the first
> > session?
> > > >
> > > > What is the J code to read the file into a noun in the second
> session?
> > > >
> > > > Should I use 1!2 & 1!:1, or fwrite & fread, or something else?
> > > >
> > > >
> > > > Where in the J doc are these file operations and their tradeoffs
> > > described?
> > > >
> > > >
> > > > Skip
> > > >
> > > >
> > > > Skip Cave
> > > > Cave Consulting LLC
> > > >
> ----------------------------------------------------------------------
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> 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