Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

SICP

Name: Anonymous 2008-12-23 14:30

I'm now readin SICP.Its not a bad book at all.
Its notation however sucks:
(+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
There is no way i could see which empty)( places contain which operators without reading entire string piece by piece.
This wouldn't work with larger strings.

Name: Anonymous 2008-12-23 14:34

I'm now readin SICP.Its not a bad book at all.
Its notation however sucks:
3*(2*4 + 3 + 5) + 10 - 7 + 6
There is no way i could see which empty)( places contain which operators without reading entire string piece by piece.
This wouldn't work with larger strings.

Name: Anonymous 2008-12-23 14:37

>>2
Why they don't use this format? Its far easier to read.

Name: Anonymous 2008-12-23 14:40

>>3
In what way? It requires mentally running through some arbitrary order of operations to find out what it does, and it also duplicates operators.

Name: Anonymous 2008-12-23 14:43

compare readibility:
(define (abs x)
  (cond ((> x 0) x)
        ((= x 0) 0)
        ((< x 0) (- x))))

function abs(x){
if(x>0){return x}
if(x=0){return 0}
if(x<0){return -x}
}

Name: Anonymous 2008-12-23 14:46

MORE OPTIMIZED:
function abs(x){if(x<0){return -x}; return x}

Name: Anonymous 2008-12-23 14:49

>>4
It shows the operators.
Your version hides the operators.
When i debug code i want to see operators NOW.
I don't want to evaluate the ()(()()()( aids.

Name: Anonymous 2008-12-23 14:55

>>5
What if I told you that |0| = -0?

Name: Anonymous 2008-12-23 14:56

>>6
built-in Math.abs() is.. 1.5 times slower.

Name: Anonymous 2008-12-23 14:58

>>8
Blame SICP authors.Its their own code.

Name: Anonymous 2008-12-23 15:02

(+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
((((2 * 4) + (3 + 5)) * 3) + ((10 - 7) + 6))

Name: Anonymous 2008-12-23 15:02

>>6
MORE MORE OPTIMIZED:
int
abs(int i)
{
  switch(i) {
    ...
    case -1:
      return 1;
    case  0:
      return 0;
    case  1:
      return 1;
    ...
  }
}

Name: Anonymous 2008-12-23 15:06

>>12
MORE MORE MORE OPTIMIZED:
int abses[] = { 0, 1, ... };

int
abs(int i)
{
  if(i < 0)
    return (abses[-i]);
  else
    return (abses[i]);
}

Name: Anonymous 2008-12-23 15:09

This is how we would do it in haskell

abs _ = error "wrong argument!"

Name: Anonymous 2008-12-23 15:15

>>14
Wat?

Name: Anonymous 2008-12-23 15:16

>>14
That is not Haskell. I don't see any Nomads.

Name: Anonymous 2008-12-23 15:18

Sorry, I meant

abs _ = error "type error"

Name: Anonymous 2008-12-23 15:23

>>13
for extra speed use this version:
function absvalue(x,sign){
if(sign=='-'){x='-'+x}
if(sign=='+'){x='+'+x}
x=parseInt(x);
if(x>0){var result="Positive"}
if(x=0){var result="Zero"}
if(x<0){var result="Negative"}
switch(result){
case "Positive":
return x;break;
case "Zero":
return x;break;
case "Negative";
return negative(x);break;
}

function negative(x){
var y=0-x;
return y
}

}

Name: Anonymous 2008-12-23 16:45

>>7
It... hides the operators? (- 1 (+ 1 1 1 1 1 1 1 1 1 1 1 1 1)) What is hidden here? Contrast with 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 - 1 + 1 + 1 + 1 What's hidden here?

Name: Anonymous 2008-12-23 16:48

OP has a valid point.  There should be some way to "pretty print" the expression automatically so the tree structure is obvious.  How can I do that in DrScheme (or any other scheme that doesn't suck)?

Name: Anonymous 2008-12-23 16:53

>>19
(- 1 (+ 1 1 1 1 1 1 1 11 1 1 1 1 1)(-1 1 1 1 1 1 1 1 1 1 11 1 1))

Name: Anonymous 2008-12-23 16:57

>>21
What does the function "-1" do?

Name: Anonymous 2008-12-23 16:57

>>19
OPTIMIZED:
dec(sum([1,1,1,1,1,1,1,1,1,1,1,1,1]))
 function sum(x){var s=0;for(i in x){s+=x[i]};return s}
function dec(x){return x--}

Name: Anonymous 2008-12-23 17:06

>>22
Whoops.I wasn't  aware Scheme was so context-sensitive.
Its should decrement by 1.

Name: Anonymous 2008-12-23 22:30

>>20
You can always write it yourself.

Name: Anonymous 2008-12-23 23:24

inline assembly is the answer! Spread the word!

Name: Anonymous 2008-12-24 1:10

>>22
Pedantic git

Name: Anonymous 2008-12-24 2:53

>>6
FURTHER OPTIMIZATION:
function abs(x){return (x > 0) ? x : -x}

Name: Anonymous 2008-12-24 2:54

>>28
*bitmasks are even faster,but they are unreliable.

Name: Anonymous 2008-12-24 3:35

>>27
There was little else to reply to in that content-free post.

Name: Anonymous 2008-12-24 3:36

>>30
the -1 has no relevance,the subject was how hard is to read infix vs standard

Name: Anonymous 2008-12-24 3:39

>>31
Infix is standard.

Name: Anonymous 2008-12-24 3:41

>>32
In your little circle of academia maybe.

Name: Anonymous 2008-12-24 3:44

>>33
Infix is stuff like 1 + 2 right? Have I been trolled?

Name: Anonymous 2008-12-24 3:53

>>34
Have I been trolled?
Quite so, old friend.

Name: Anonymous 2008-12-24 4:01

no one outside of computer science uses prefix notation. everyone uses infix or postfix notation in the real world.

Name: Anonymous 2008-12-24 4:10

Educationally, RPN calculators have the advantage that the user must understand the expression being calculated: it is not possible to simply copy the expression from paper into the machine and read off the answer without understanding. One must calculate from the middle of the expression, which makes life easier but only if the user understands what they are doing.

Name: Anonymous 2008-12-24 4:31

Educationally, prefix notation calculators have the advantage that the user must understand the expression being calculated: it is not possible to simply copy the expression from paper into the machine and read off the answer without understanding. One must start in the middle of the expression, reverse half of it, interleave the backwards into the forward half, and add parentheses in all the right places.

Name: Anonymous 2008-12-24 4:42

parsing prefix and infix notation requires slow as fuck recursive algorithms due to their complicated syntax. postfix notation is superior.

Name: Anonymous 2008-12-24 4:50

I want to see LISPfags using prefix calculators IRL and talking about how natural and efficient it is.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List