Odd word problem/TrivialCharacterStreamSupportForJ: Difference between revisions

From Rosetta Code
Content added Content deleted
(need to be able to get fresh outstreams also)
(clarify a couple points)
Line 1: Line 1:
[[../#J|J]] lacks a character stream implementation, so this is a minimal sketch of "get a character" and "put a character" code.
[[../#J|J]] lacks a character stream implementation, so this is a minimal sketch of "get a character" and "put a character" code.


(One issue, here, is that all of J's primitives are designed for dealing with sequences. Also, the language itself is designed to amortize interpreter overhead when the primitives deal directly with sequences rather than factoring so that primitives deal with [for example] a single character at a time. So it does not make much sense to implement some specialized implementation of sequences which is designed to make character-at-a-time manipulations more concise.)
Note that this implementation allows only one input stream and one output stream per locale.

Note that this implementation allows only one input stream and one output stream per locale (a J locale is roughly equivalent to a "namespace", or a "class" or an "object" or perhaps even a "stack frame (a call/cc context)" in another language)..


<lang j>begin_instream=: 3 :0 NB.
<lang j>begin_instream=: 3 :0 NB.

Revision as of 12:53, 7 August 2012

J lacks a character stream implementation, so this is a minimal sketch of "get a character" and "put a character" code.

(One issue, here, is that all of J's primitives are designed for dealing with sequences. Also, the language itself is designed to amortize interpreter overhead when the primitives deal directly with sequences rather than factoring so that primitives deal with [for example] a single character at a time. So it does not make much sense to implement some specialized implementation of sequences which is designed to make character-at-a-time manipulations more concise.)

Note that this implementation allows only one input stream and one output stream per locale (a J locale is roughly equivalent to a "namespace", or a "class" or an "object" or perhaps even a "stack frame (a call/cc context)" in another language)..

<lang j>begin_instream=: 3 :0 NB.

 instream=: y
   last=: _1

)

 getch=: 3 :0
   last=: last+1
   last{instream
 )


clear_outstream=: 3 :0

 outstream=: 

)

 outch=: 3 :0
   outstream=: outstream, y
 )</lang>