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

Lisp and Scheme

Name: Anonymous 2007-03-08 8:14 ID:fc2iv5gF

Why is this shit still around? Didn't Haskell obsolete it 20 years ago?

Compare map:

 (define (map f lst)
   (let loop ((lst lst)
              (res '()))
     (if (null? lst)
       (reverse res)
       (loop (cdr lst)
             (cons (f (car lst)) res)))))

vs.

 map f []     = []
 map f (x:xs) = f x : map f xs

Name: Anonymous 2007-07-15 20:46 ID:cxlH6lUq

(defmacro filter ((predicate argument) sequence
                  &key (start 0 startp) (end nil endp))
  (let ((elt (gensym "ELT")))
    `(remove-if-not (lambda (,elt)
                      (,predicate ,elt ,argument))
                    ,(if (or startp endp)
                         `(subseq ,sequence ,start ,end)
                         sequence))))

(defmacro << (&rest body)
  `(append ,@body))

(defmacro [] (&rest body)
  `(list ,@body))

(defmacro 1-n (lst frst secnd &rest body)
  `(when lst
    (let ((,frst (car ,lst))
          (,secnd (cdr ,lst)))
      ,@body)))

;;;;;;;;;;;

;;; Haskell
qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

;;; Lisp
(defun qsort (lst) (1-n lst x xs (<< (qsort (filter (< x) xs)) ([] x) (qsort (filter (>= x) xs)))))



Thread over.

Name: Anonymous 2007-07-15 20:49 ID:MLpU7TlZ

>>40
THREAD ENDED ALREADY

Name: Anonymous 2007-07-15 20:58 ID:cxlH6lUq

>>15
If syntactic sugar (see: pattern matching) makes a language good, then a language that allows you to define your own syntactic sugar is even better.

...

HOW DO I UNDERSTOOD THE IMPLICATIONS OF MACROS?

Name: Anonymous 2007-07-15 21:00 ID:TZF+Q6RH

>>6

Why is this shit still around? Didn't C obsolete it 20 years ago?

Name: Anonymous 2007-07-15 22:38 ID:Heaven

Type inference is for fags

Name: Anonymous 2007-07-15 23:30 ID:3OgO/mI2

>>14
why? this is almost as short (a few characters of difference) and cleaner
f [] l2 = l2
f t:r l2 = frs:f r rst
    where (frs, rst) = splitAt t l2

contrast:
f [] l2 = l2 f t:r l2 = frs:f r rst where (frs, rst) = splitAt t l2
f = foldr (\n r -> splitAt n >>> second r >>> uncurry (:)) return

of course lisp version is similar to this.

Name: Anonymous 2007-07-15 23:36 ID:9rG+Dl7I

Name: Anonymous 2009-01-14 13:36

WHBTC

Name: Anonymous 2010-12-09 14:02

Name: Anonymous 2011-02-04 18:52

Name: Anonymous 2011-04-06 9:37

Great thread. Why don't we have threads as good as this anymore?

Name: Anonymous 2011-04-06 9:48

>>53
because assholes like yourself spend all your time whining about mythic "good old days" instead of making interesting posts.

Name: Anonymous 2011-04-06 10:14

mapping functions come with the language by default, why rewrite them, besides you chose a pretty verbose way to write it, it can be written much simpler. Lisp can be as expressive as Haskell, without the syntax mess.

Name: Anonymous 2011-04-06 10:18

>>55
Haskell's syntactic sugar is quite sweet and optional. It is  up to yourself if to decide to do your function definitions using only brackets.

Name: Anonymous 2011-04-06 11:42

Also Haskell wasn't around 20 years ago. You idiot.
You have to count Haskell's age in dog years.

>>41
So you have a lisp version which is only slightly longer and not that much uglier and all you had to do was write ugly macrocode of 10 times the length of the actual code.

>>14
forward feed? go back to f#

Name: Anonymous 2011-04-06 12:03

>>14

f [] ys = [ys]        
f (x:xs) ys = take x ys : f  xs (drop x ys)

-- call like so:
-- f [2,5,0,3] [1..15]


more readable imho

Name: nambla_dot_org_rules you 2011-04-06 12:37

"map f []     = []
 map f (x:xs) = f x : map f xs
"

That map function is wrong in Haskell. The first line should be

map f _ [] = []

and not

f [] = []

Remember, map in Haskell operates on the list itself. Now get with the program and stop thinking like a C++ weenie.

Name: Anonymous 2011-04-06 12:45

>>59
i don't even

Name: Anonymous 2011-04-06 13:43

>>59
i do odd

Name: Anonymous 2011-04-06 17:51

Yeah, it's not like there hasn't been portable pattern matching in Scheme for about 15 years... oh wait.

Name: Anonymous 2011-04-06 17:57

Name: Anonymous 2011-04-06 17:59

>>57
Hahaha

Name: A FEW FACTS... 2011-04-06 19:20


Lisp              | Haskell
------------------|------------------
map f l           | map f l
map list l1 l2    | zip l1 l2
map list l1 l2 l3 | zip3 l1 l2 l3
map f l1 l2       | zipWith f l1 l2
map f l1 l2 l3    | zipWith3 f l1 l2 l3



Lisp

(defmacro show (&rest xs) ...)


Haskell

instance  (Show a, Show b) => Show (a,b)  where
  showsPrec _ (a,b) s = show_tuple [shows a, shows b] s

instance (Show a, Show b, Show c) => Show (a, b, c) where
  showsPrec _ (a,b,c) s = show_tuple [shows a, shows b, shows c] s

instance (Show a, Show b, Show c, Show d) => Show (a, b, c, d) where
  showsPrec _ (a,b,c,d) s = show_tuple [shows a, shows b, shows c, shows d] s

instance (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) where
  showsPrec _ (a,b,c,d,e) s = show_tuple [shows a, shows b, shows c, shows d, shows e] s

instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a,b,c,d,e,f) where
  showsPrec _ (a,b,c,d,e,f) s = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g)
        => Show (a,b,c,d,e,f,g) where
  showsPrec _ (a,b,c,d,e,f,g) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h)
         => Show (a,b,c,d,e,f,g,h) where
  showsPrec _ (a,b,c,d,e,f,g,h) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i)
         => Show (a,b,c,d,e,f,g,h,i) where
  showsPrec _ (a,b,c,d,e,f,g,h,i) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j)
         => Show (a,b,c,d,e,f,g,h,i,j) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k)
         => Show (a,b,c,d,e,f,g,h,i,j,k) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j,k) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j, shows k] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k,
          Show l)
         => Show (a,b,c,d,e,f,g,h,i,j,k,l) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j,k,l) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j, shows k, shows l] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k,
          Show l, Show m)
         => Show (a,b,c,d,e,f,g,h,i,j,k,l,m) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j,k,l,m) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j, shows k, shows l, shows m] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k,
          Show l, Show m, Show n)
         => Show (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j,k,l,m,n) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j, shows k, shows l, shows m, shows n] s

instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k,
          Show l, Show m, Show n, Show o)
         => Show (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where
  showsPrec _ (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) s
        = show_tuple [shows a, shows b, shows c, shows d, shows e, shows f, shows g, shows h,
                      shows i, shows j, shows k, shows l, shows m, shows n, shows o] s

Name: Anonymous 2011-04-06 19:23

LISP:

(`+` 3 4 5 ?) 6


Haskell:

(3 `f` 4 `f` 5 `f`) 6


LISP:

len a b -> sqrt 0+@(map ?^2 b-a)

Haskell:

len (Point x1 y1) (Point x2 y2) = sqrt $ fromIntegral ((x2-x1)^2 + (y2-y1)^2)


LISP:

f [x _ @xs] -> x+xs,f

Haskell:

f = sum . map snd . filter (odd.fst) . zip [1..]



LISP:

clockwise[x@xs]->[@x@xs,transpose,rev,clockwise]

Haskell:

clockwise (x:xs) = x ++ (clockwise . reverse . transpose) xs
clockwise _ = []


LISP:

factorial 1->1; n->n*(factorial n-1)


Haskell

product :: [Integer] -> Integer
product []     = 1
product (x:xs) = x * product xs
factorial n = procuct [1..n]

-- alternatively:
factorial::Integer->Integer
factorial 0=1
factorial n=n*factorial(n-1)

Name: Anonymous 2011-04-06 19:34

>>66
Nice LISP, fagstorm.

Name: Anonymous 2011-04-06 19:40

For me, the word "static" associates with: conservativity, spongers from academia, type theory, OOP, inconvenience, top-down nightmare, traditional pseudoscience, complicated religion, design patterns, 1984, jewish mathematics, verbose ugliness, overengineered.

Name: Anonymous 2011-04-06 19:48

>>66
Not Lisp.
>>65
#t

Name: Anonymous 2011-04-06 19:56

Haskell has operators. Tons of them.

! <+> <> +++ <-> <|> // <$> </> >< ## $$ << <?> ==> !! # $+$ /=? <&>
|+ |- &&? .* .|. <$$> <.> <||> ==? ? \\/ ||? !> $ && &&& &&@ *. -<-
-=- ->- . .&. .&.? .= /=@ /\\ <*> <+ <. <//> <:> <== <=> <=? <=@ <?
<@ <|*|> =<< ==@ >-> >. >:> >=> >=? >=@ >>> >? >@ \\\\ ^ ^^ |* |> ||
||* ||+ ||@ ||| ~: ~? ~~ !!! !-> !.! !>>= $! $$= $=! $> $~ $~! % %:
%= & &&. &> * *& *&&&* *&* ** *** ***** *<<<* *=* *=>* *> *>>>* *|*
+ ++ ++>> +/+ +: += +> +>> - -!- --> -->> -/\\- -::- -< -<=- -=> -?-
-?> -?>> -\\/- -| -|- -~> .$. .+ .++. .--. .-. .->. ... .... ./. ./=
.: .< .<= .== .=> .> .@. .\\. / /+/ /- /=&& /=. /==> /=> /=|| />/ /|
/~ /~? :+ :-> <$ <$?> <* <**> <++ <++> <-$ <-- </=? <<! <<< <<^ <<|
<<~ <=. <==? <@> <|?> =$$= =$= =*= =/= =< =<<! =<= =<>= ==&& ==. ===
===> ==|| =>> =~ =~~ >*> >++> >-- >=. >== >===> >=>=> >> >>= >>=#
>>@ >>^ >|< >||< ?&&? ?+ ?? ?||? @=? @? @?= @@ \\== ^# ^% ^. ^<< ^>>
^^. ^^^ |*| |-| |. |..| |.| |/ |// |: |<- |= |=| |? |\\ |\\\\ ||.
|||| ~=? ~> ~?= ~|||~ ~||~ ~|~ ~~> ~~? ~~~>

Name: Anonymous 2011-04-06 20:24


$ len "map f [x@xs] -> [x,f @(map f xs)]"
33

$ len "map f (x:xs) = f x : map f xs; map f [] = []"
44


That is why.

Name: Anonymous 2011-04-06 20:27

>>70
Perl 6 has a periodic table of operators, beat that.
http://glyphic.s3.amazonaws.com/ozone/mark/periodic/Periodic%20Table%20of%20the%20Operators%20A4%20300dpi.jpg
N.B.: It's outdated.

Name: Anonymous 2011-04-07 5:51

>>63
I was referring to Andrew Wright's matcher written ~1996. Nowadays you'd use Alex Shinn's which uses syntax-rules and gets rid of most of the features no-one actually uses.

Name: 2012-01-25 6:51

Name: Anonymous 2012-01-25 6:52

              JJJJJJJJJJJEEEEEEEEEEEEEEEEEEEEEEWWWWWWWW                           WWWWWWWW   SSSSSSSSSSSSSSS
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::W SS:::::::::::::::S
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::WS:::::SSSSSS::::::S
              JJ:::::::JJEE::::::EEEEEEEEE::::EW::::::W                           W::::::WS:::::S     SSSSSSS
                J:::::J    E:::::E       EEEEEE W:::::W           WWWWW           W:::::W S:::::S         
                J:::::J    E:::::E               W:::::W         W:::::W         W:::::W  S:::::S         
                J:::::J    E::::::EEEEEEEEEE      W:::::W       W:::::::W       W:::::W    S::::SSSS      
                J:::::j    E:::::::::::::::E       W:::::W     W:::::::::W     W:::::W      SS::::::SSSSS 
                J:::::J    E:::::::::::::::E        W:::::W   W:::::W:::::W   W:::::W         SSS::::::::SS
    JJJJJJJ     J:::::J    E::::::EEEEEEEEEE         W:::::W W:::::W W:::::W W:::::W             SSSSSS::::S
    J:::::J     J:::::J    E:::::E                    W:::::W:::::W   W:::::W:::::W                   S:::::S
    J::::::J   J::::::J    E:::::E       EEEEEE        W:::::::::W     W:::::::::W                    S:::::S
    J:::::::JJJ:::::::J  EE::::::EEEEEEEE:::::E         W:::::::W       W:::::::W         SSSSSSS     S:::::S
     JJ:::::::::::::JJ   E::::::::::::::::::::E          W:::::W         W:::::W          S::::::SSSSSS:::::S
       JJ:::::::::JJ     E::::::::::::::::::::E           W:::W           W:::W           S:::::::::::::::SS
         JJJJJJJJJ       EEEEEEEEEEEEEEEEEEEEEE            WWW             WWW             SSSSSSSSSSSSSSS 

Name: Anonymous 2012-01-25 6:52

              JJJJJJJJJJJEEEEEEEEEEEEEEEEEEEEEEWWWWWWWW                           WWWWWWWW   SSSSSSSSSSSSSSS
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::W SS:::::::::::::::S
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::WS:::::SSSSSS::::::S
              JJ:::::::JJEE::::::EEEEEEEEE::::EW::::::W                           W::::::WS:::::S     SSSSSSS
                J:::::J    E:::::E       EEEEEE W:::::W           WWWWW           W:::::W S:::::S         
                J:::::J    E:::::E               W:::::W         W:::::W         W:::::W  S:::::S         
                J:::::J    E::::::EEEEEEEEEE      W:::::W       W:::::::W       W:::::W    S::::SSSS      
                J:::::j    E:::::::::::::::E       W:::::W     W:::::::::W     W:::::W      SS::::::SSSSS 
                J:::::J    E:::::::::::::::E        W:::::W   W:::::W:::::W   W:::::W         SSS::::::::SS
    JJJJJJJ     J:::::J    E::::::EEEEEEEEEE         W:::::W W:::::W W:::::W W:::::W             SSSSSS::::S
    J:::::J     J:::::J    E:::::E                    W:::::W:::::W   W:::::W:::::W                   S:::::S
    J::::::J   J::::::J    E:::::E       EEEEEE        W:::::::::W     W:::::::::W                    S:::::S
    J:::::::JJJ:::::::J  EE::::::EEEEEEEE:::::E         W:::::::W       W:::::::W         SSSSSSS     S:::::S
     JJ:::::::::::::JJ   E::::::::::::::::::::E          W:::::W         W:::::W          S::::::SSSSSS:::::S
       JJ:::::::::JJ     E::::::::::::::::::::E           W:::W           W:::W           S:::::::::::::::SS
         JJJJJJJJJ       EEEEEEEEEEEEEEEEEEEEEE            WWW             WWW             SSSSSSSSSSSSSSS 

Name: Anonymous 2012-01-25 6:52

              JJJJJJJJJJJEEEEEEEEEEEEEEEEEEEEEEWWWWWWWW                           WWWWWWWW   SSSSSSSSSSSSSSS
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::W SS:::::::::::::::S
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::WS:::::SSSSSS::::::S
              JJ:::::::JJEE::::::EEEEEEEEE::::EW::::::W                           W::::::WS:::::S     SSSSSSS
                J:::::J    E:::::E       EEEEEE W:::::W           WWWWW           W:::::W S:::::S         
                J:::::J    E:::::E               W:::::W         W:::::W         W:::::W  S:::::S         
                J:::::J    E::::::EEEEEEEEEE      W:::::W       W:::::::W       W:::::W    S::::SSSS      
                J:::::j    E:::::::::::::::E       W:::::W     W:::::::::W     W:::::W      SS::::::SSSSS 
                J:::::J    E:::::::::::::::E        W:::::W   W:::::W:::::W   W:::::W         SSS::::::::SS
    JJJJJJJ     J:::::J    E::::::EEEEEEEEEE         W:::::W W:::::W W:::::W W:::::W             SSSSSS::::S
    J:::::J     J:::::J    E:::::E                    W:::::W:::::W   W:::::W:::::W                   S:::::S
    J::::::J   J::::::J    E:::::E       EEEEEE        W:::::::::W     W:::::::::W                    S:::::S
    J:::::::JJJ:::::::J  EE::::::EEEEEEEE:::::E         W:::::::W       W:::::::W         SSSSSSS     S:::::S
     JJ:::::::::::::JJ   E::::::::::::::::::::E          W:::::W         W:::::W          S::::::SSSSSS:::::S
       JJ:::::::::JJ     E::::::::::::::::::::E           W:::W           W:::W           S:::::::::::::::SS
         JJJJJJJJJ       EEEEEEEEEEEEEEEEEEEEEE            WWW             WWW             SSSSSSSSSSSSSSS 

Name: Anonymous 2012-01-25 6:53

              JJJJJJJJJJJEEEEEEEEEEEEEEEEEEEEEEWWWWWWWW                           WWWWWWWW   SSSSSSSSSSSSSSS
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::W SS:::::::::::::::S
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::WS:::::SSSSSS::::::S
              JJ:::::::JJEE::::::EEEEEEEEE::::EW::::::W                           W::::::WS:::::S     SSSSSSS
                J:::::J    E:::::E       EEEEEE W:::::W           WWWWW           W:::::W S:::::S         
                J:::::J    E:::::E               W:::::W         W:::::W         W:::::W  S:::::S         
                J:::::J    E::::::EEEEEEEEEE      W:::::W       W:::::::W       W:::::W    S::::SSSS      
                J:::::j    E:::::::::::::::E       W:::::W     W:::::::::W     W:::::W      SS::::::SSSSS 
                J:::::J    E:::::::::::::::E        W:::::W   W:::::W:::::W   W:::::W         SSS::::::::SS
    JJJJJJJ     J:::::J    E::::::EEEEEEEEEE         W:::::W W:::::W W:::::W W:::::W             SSSSSS::::S
    J:::::J     J:::::J    E:::::E                    W:::::W:::::W   W:::::W:::::W                   S:::::S
    J::::::J   J::::::J    E:::::E       EEEEEE        W:::::::::W     W:::::::::W                    S:::::S
    J:::::::JJJ:::::::J  EE::::::EEEEEEEE:::::E         W:::::::W       W:::::::W         SSSSSSS     S:::::S
     JJ:::::::::::::JJ   E::::::::::::::::::::E          W:::::W         W:::::W          S::::::SSSSSS:::::S
       JJ:::::::::JJ     E::::::::::::::::::::E           W:::W           W:::W           S:::::::::::::::SS
         JJJJJJJJJ       EEEEEEEEEEEEEEEEEEEEEE            WWW             WWW             SSSSSSSSSSSSSSS 

Name: Anonymous 2012-01-25 6:53

              JJJJJJJJJJJEEEEEEEEEEEEEEEEEEEEEEWWWWWWWW                           WWWWWWWW   SSSSSSSSSSSSSSS
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::W SS:::::::::::::::S
              J:::::::::JE::::::::::::::::::::EW::::::W                           W::::::WS:::::SSSSSS::::::S
              JJ:::::::JJEE::::::EEEEEEEEE::::EW::::::W                           W::::::WS:::::S     SSSSSSS
                J:::::J    E:::::E       EEEEEE W:::::W           WWWWW           W:::::W S:::::S         
                J:::::J    E:::::E               W:::::W         W:::::W         W:::::W  S:::::S         
                J:::::J    E::::::EEEEEEEEEE      W:::::W       W:::::::W       W:::::W    S::::SSSS      
                J:::::j    E:::::::::::::::E       W:::::W     W:::::::::W     W:::::W      SS::::::SSSSS 
                J:::::J    E:::::::::::::::E        W:::::W   W:::::W:::::W   W:::::W         SSS::::::::SS
    JJJJJJJ     J:::::J    E::::::EEEEEEEEEE         W:::::W W:::::W W:::::W W:::::W             SSSSSS::::S
    J:::::J     J:::::J    E:::::E                    W:::::W:::::W   W:::::W:::::W                   S:::::S
    J::::::J   J::::::J    E:::::E       EEEEEE        W:::::::::W     W:::::::::W                    S:::::S
    J:::::::JJJ:::::::J  EE::::::EEEEEEEE:::::E         W:::::::W       W:::::::W         SSSSSSS     S:::::S
     JJ:::::::::::::JJ   E::::::::::::::::::::E          W:::::W         W:::::W          S::::::SSSSSS:::::S
       JJ:::::::::JJ     E::::::::::::::::::::E           W:::W           W:::W           S:::::::::::::::SS
         JJJJJJJJJ       EEEEEEEEEEEEEEEEEEEEEE            WWW             WWW             SSSSSSSSSSSSSSS 

Name: Sgt.Kabu૎kiman憣绲 2012-05-28 23:05

Bringing /prog/ back to its people
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy

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