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

Pages: 1-

My first scheme program

Name: Anonymous 2012-01-17 16:31

Wrote this while bored and waiting for my functional programming class... is it... okay?


(define quad
  (lambda (a b c)
    (define root (- (* b b) (* 4 a c)))
    (if (> root 0)
      (list
        (/ (+ (- b) (sqrt root)) (* 2 a))
        (/ (- (- b) (sqrt root)) (* 2 a)))
      '()
    )))

Name: Anonymous 2012-01-17 16:44

It's ok, but return multiple values if possible.

Name: Anonymous 2012-01-17 16:45

Why not return complex roots, fagstrum?

Name: Anonymous 2012-01-17 16:55

>>3
(define (solve +/- b delta a)
  (/ (+/- (- b) (sqrt delta)) (* 2 a)))
(define (solve-complex +/- b delta a)
  (+/- (/ (- b) (* 2 a))
       (* +i (/ (sqrt (- delta))
                (* 2 a)))))

(define (quad a b c)
  (let ((delta (- (sqr b) (* 4 a c)))
        (solve (if (> delta 0) solve solve-complex)))
    (if (zero? delta) (- (/ b (* 2 a)))
        (values (solve + b delta a)
                (solve - b delta a)))))

Name: Anonymous 2012-01-17 17:09

>>4
$ scheme48
Welcome to Scheme 48 1.8 (made by yellow on Sun Sep 18 01:57:41 UTC 2011)
Copyright (c) 1993-2008 by Richard Kelsey and Jonathan Rees.
Please report bugs to scheme-48-bugs@s48.org.
Get more information at http://www.s48.org/.
Type ,? (comma question-mark) for help.
(sqrt -1)
0.0+1.0i

Exit Scheme 48 (y/n)? y
$ racket
Welcome to Racket v5.1.1.
(sqrt -1)
0+1i

$

Name: Anonymous 2012-01-17 17:35

>>5
I feel retarded now.
(define (solve +/- b delta a)
  (/ (+/- (- b) (sqrt delta)) (* 2 a)))

(define (quad a b c)
  (let ((delta (- (sqr b) (* 4 a c))))
    (if (zero? delta) (- (/ b (* 2 a)))
        (values (solve + b delta a)
                (solve - b delta a)))))

Name: Anonymous 2012-01-17 22:36

moar like mah first shit program, amirite?

Name: Anonymous 2012-01-18 12:14

>>7
yeah cuz lisp is shit

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