I can't seem to stop myself from answering "style"questions:
I learned APL from Ken and was greatly influenced his notion of notation as
a tool of thght. To me he was a mathematician first. So look at the start
of Taylor Coefficients as influenced by some of Raul's rules:
X=:10%~I=:i.8
I
0 1 2 3 4 5 6 7
X
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
F=: 1 2 1&p.
F
1 2 1&p.
5!:4 <'F'
┌─ 1 2 1
── & ─┴─ p.
F 5
36
F X
1 1.21 1.44 1.69 1.96 2.25 2.56 2.89
NB. c p. x ↔ +/c*x^i.#c from vocabulary
PD=: 13 :'+/x*y^i.#x' NB. p. or p dot
PD
[: +/ [ * ] ^ [: i. [: # [
5!:4 <'PD'
┌─ [:
├─ / ─── +
│
──┤ ┌─ [
│ ├─ *
└─────┤ ┌─ ]
│ ├─ ^
└───┤ ┌─ [: y
│ ├─ i.
└───┤ ┌─ [:
└────┼─ #
└─ [
Build PD by: tally x , integers of tally x, y to power of integers of
tally x and so forth ending with the sum of everything. As you build,
some of the “trimmings” are being handled for you. Forks and hooks are
inserted.
PD 5
5
|length error: PD
| 1 2 1 PD X
So, back to the drawing board:
#1 2 1
3
i.#1 2 1
0 1 2
X^/ i.#1 2 1
1 0 0
1 0.1 0.01
1 0.2 0.04
1 0.3 0.09
1 0.4 0.16
1 0.5 0.25
1 0.6 0.36
1 0.7 0.49
(+/"1) 1 2 1*"1 X^/i.#1 2 1
1 1.21 1.44 1.69 1.96 2.25 2.56 2.89
PD=: 13 :'+/"1 x*"1 y^/i.#x'
PD
[: +/"1 [ *"1 ] ^/ [: i. [: # [
5!:4 <'PD'
┌─ [:
│ ┌─ / ─── +
├─ " ─┴─ 1
│
──┤ ┌─ [
│ │ ┌─ *
│ ├─ " ─┴─ 1
│ │
└─────┤ ┌─ ]
│ ├─ / ─── ^
│ │
└─────┤ ┌─ [:
│ ├─ i.
└─────┤ ┌─ [:
└────┼─ #
└─ [
1 2 1 PD X
1 1.21 1.44 1.69 1.96 2.25 2.56 2.89
The story has a happy ending.
Linda
-----Original Message-----
From: [email protected]mailto:programming-bo
[email protected]] On Behalf Of Raul Miller
Sent: Friday, November 02, 2012 1:04 PM
To: [email protected]
Subject: Re: [Jprogramming] Arc consistency in J
On Fri, Nov 2, 2012 at 1:01 AM, Michal D. <[email protected]>
wrote:
> Hi All,
>
> I've managed to write my first not-completely-trivial program in J.
> It implements an arc consistency algorithm (
> http://en.wikipedia.org/wiki/Local_consistency#Arc_consistency). I
> would appreciate any comments regarding style, what I'm doing wrong in
> J or how to improve the code. I also have a couple of questions of my
own:
Personally, I use "mostly" coding guidelines. I recognize that there will
need to be cases where I do not comply with my own guidelines, but I use
these guidelines when I have no reason to do something
different:
No space between name and copula. This makes it easy to search for
assignments to a name.
Case of name represents type assigned to name. NOUNS, verbs,
Adverbs/Conjunctions
Feel free to ignore these...
> 1) how do I avoid @ especially once we remove explicit arguments?
@ is function composition. It looks ugly because J limits itself to ASCII
sequences for its language. What we would ideally want is a character that
looks like a small circle (but elevated slightly, to avoid confusion with
the letter o) But ASCII itself is ugly -- ASCII's value is not its beauty
but its ubiquity. That said, here are some equivalent cases:
f@g
f@:g"g
([: f g)"g
f&g@(]"g)
f&:g@(]"g)
Depending on your context, you may be able to remove @(]"g) or "g and still
retain equivalence, and additional equivalences may also be valid. For
example:
f@g y
f&g y
f&> <&g y
> 2) how do I avoid constant boxing/unboxing due to fill (see arcsX)?
Here are some alternative arcsX definitions:
arcsX1=: [: ; [ ,.&.> {
arcsX2=: [ ((#~ #@>) ,. ;@]) {
> 3) Is a boxed value always a pointer? One could imagine implementing
> 'ragged' arrays without pointers.
That is how they are currently implemented, yes.
> 4) Is there a good way to have named variables (ie. avoid getx, gety)?
Define "good"...
One option is to use explicit code -- the definition of "explicit code" is
essentially "named variables".
> 5) Why is a hook the default and not composition?
It's historical:
http://www.jsoftware.com/pipermail/general/2006-January/026271.html
http://www.jsoftware.com/pipermail/general/2006-January/026274.html
> Code at: http://pastebin.com/k4XuKfFi
I have not taken the time to fully digest what you are doing there, but
it's possible that by characterizing the data differently the expressions
could be made more direct. I cannot guarantee this (because I have not
taken the time to understand the purpose of what you are doing), but that
has been my experience in many other contexts.
FYI,
--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm