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

Pages: 1-

Fap fap fap

Name: Anonymous 2007-04-04 9:44 ID:HirEo2Uj


import operator

def Eval(l):
    if type(l) == list:
        if not l:
            return None
        else:
            return Eval(l[0])(*l[1:])
    else:
        return l

#Decorator to evaluate arguments; they default to lazy evaluation
evalargs = lambda f: lambda *a: f(*map(Eval, a))

add = evalargs(lambda *a: reduce(operator.add, a))

def eq(*a):
    l = len(a)
    if l < 2:
        return True
    o = Eval(a[0])
    for i in xrange(1, l):
        if Eval(a[i]) != o:
            return False
    return True

def If(cond, t, f):
    if Eval(cond): return Eval(t)
    else: return Eval(f)

def Do(*a):
    for i in a:
        out = Eval(i)
    return out
#Maybe also Do = lambda *a: map(Eval, a)[-1], but less efficient

@evalargs
def OutLn(*a):
    print u''.join(unicode(i) for i in a)


#Ok, now let's test it:
body = [If, [eq, 1, 1], [OutLn, 10], [OutLn, 20]]
Eval(body)
#Expected: prints 10


Do you think I've fapped enough, or should I fap further into this?

Name: Anonymous 2007-04-04 12:23 ID:aEyv6yT0

How about doing this in a real language?

module Main where

data Exp = Number Int
         | Equal Exp Exp
         | If Exp Exp Exp
         | T
         | F
       deriving Read

eval :: Exp -> Int
eval  (Number x) = x
eval           T = 1
eval           F = 0
eval (Equal a b) = if eval a == eval b then 0 else 1
eval  (If a b c) = if eval a == 0 then eval b else eval c

main = putStr "> " >> getLine >>= return . eval . read >>= print >> main

{-

*Main> main
If (Equal (Number 10) (Number 6)) (Number 123) (Number 456)
456
T
1
F
0

-}

Name: Anonymous 2007-04-04 13:42 ID:5Fvr29Uk

>>2
I lol'd at the pawnage.

Name: Anonymous 2007-04-04 13:43 ID:KDfc/km0

>>2
Faptastic! Though my Eval supports any data type and any function present in the langauge, for which arguments default to lazy evaluation (I've written an evalargs decorator to do otherwise), my eq supports any number of expressions, and I've implemented Do but not used it in the example. I could go on and see how I can wrap Eval in functions to get nested scopes.

Name: Anonymous 2007-04-04 13:56 ID:Heaven

>>4
Does it support comparison of lambda functions?

Name: Anonymous 2007-04-04 15:04 ID:KDfc/km0

>>5
Yes, for native functions f1, f2: f1.func_code.co_code == f2.func_code.co_code, to compare lists l1 and l2 use just l1 == l2

Name: Anonymous 2007-04-04 16:59 ID:aEyv6yT0

This sucks but I'm posting it anyway because I spent so much time on it.

{-# OPTIONS_GHC -fglasgow-exts #-}

module Main where

import Control.Monad.State
import Control.Monad.Error
import Control.Monad

import qualified Data.Map as M

import System.IO
import System.Exit

data Exp = Num  Int
         | Eq   Exp Exp
         | Bind String Exp Exp
         | Var  String
         | Add  Exp Exp
         | T
         | F
       deriving (Eq, Read)

instance Show Exp where
    show (Num a) = show a
    show       _ = fail "Cannot show that."

type PContext = M.Map String Exp
type PError   = ErrorT String IO
type PState   = StateT PContext PError Exp

eval :: Exp -> PState

eval n@(Num a) = return n

eval T = return $ Num 0
eval F = return $ Num 1

eval (Bind s a b) = do
    modify (M.insert s a)
    c <- eval b
    return c

eval (Var s) = do
    dict <- get
    case M.lookup s dict of
      Just  a -> return a
      Nothing -> fail "No such variable"

eval (Add a b) = do
    (Num a') <- eval a
    (Num b') <- eval b
    return $ Num $ a' + b'

eval (Eq a b) = do
    a' <- eval a
    b' <- eval b
    return $ if a' == b' then T else F

eval _ = fail $ "Nuhuh. Something went wrong."

io         = liftIO
prompt     = io $ putStr "> "
flush      = io $ hFlush stdout
readPrompt = io getLine

loop :: PState
loop = do prompt
          flush
          line <- readPrompt
          case line of
              "quit" -> io $ exitWith ExitSuccess
              l      -> do let mayhap = reads l
                           if null mayhap
                             then io $ putStrLn "No parse"
                             else do e <- eval $ fst $ last $ mayhap
                                     io $ print e
                           loop
       `catchError` (\e -> do io $ putStrLn e
                              loop)

main :: IO ()
main = do runErrorT (evalStateT loop M.empty)
          return ()

Name: Anonymous 2007-04-10 8:34 ID:I25dQBhL

Name: Anonymous 2007-04-23 19:12 ID:bu92yGwW

Name: Anonymous 2007-04-23 19:53 ID:BUrnyvwc

>>8
404. You should know better than to link to a file on /b/.

Name: Anonymous 2009-01-14 15:20

No

Name: Anonymous 2009-01-14 15:21

lazy evaluation
HASKELL. HASKELL NOMADS.

Name: Anonymous 2009-08-17 0:10

Lain.

Name: Anonymous 2011-02-04 18:06

Name: Anonymous 2012-03-25 9:59

All work and no play makes Jack a dull boy

All work and no play makes Jack a dull boyAll 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 boyAll 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 boyAll 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 boyAll 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 boyAll 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 boyAll 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

Name: Sgt.Kabukiman薀⿘ 2012-05-23 5:04



1  Name: Anonymous : 2007-04-04 09:44  ID:HirEo2Uj


import operatordef Eval(l):    if type(l) == list:        if not l:            return None        else:            return Eval(l[0])(*l[1:])    else:        return l#Decorator to evaluate arguments; they default to lazy evaluationevalargs = lambda f: lambda *a: f(*map(Eval, a))add = evalargs(lambda *a: reduce(operator.add, a))def eq(*a):    l = len(a)    if l < 2:        return True    o = Eval(a[0])    for i in xrange(1, l):        if Eval(a[i]) != o:            return False    return Truedef If(cond, t, f):    if Eval(cond): return Eval(t)    else: return Eval(f)def Do(*a):    for i in a:        out = Eval(i)    return out#Maybe also Do = lambda *a: map(Eval, a)[-1], but less efficient@evalargsdef OutLn(*a):    print u''.join(unicode(i) for i in a)#Ok, now let's test it:body = [If, [eq, 1, 1], [OutLn, 10], [OutLn, 20]]Eval(body)#Expected: prints 10

Do you think I've fapped enough, or should I fap further into this?



2  Name: Anonymous : 2007-04-04 12:23  ID:aEyv6yT0


How about doing this in a real language?

module Main wheredata Exp = Number Int         | Equal Exp Exp         | If Exp Exp Exp         | T         | F       deriving Readeval :: Exp -> Inteval  (Number x) = xeval           T = 1eval           F = 0eval (Equal a b) = if eval a == eval b then 0 else 1eval  (If a b c) = if eval a == 0 then eval b else eval cmain = putStr "> " >> getLine >>= return . eval . read >>= print >> main{-*Main> mainIf (Equal (Number 10) (Number 6)) (Number 123) (Number 456)456 T1F0-}



3  Name: Anonymous : 2007-04-04 13:42  ID:5Fvr29Uk


>>2
I lol'd at the pawnage.



4  Name: Anonymous : 2007-04-04 13:43  ID:KDfc/km0


>>2
Faptastic! Though my Eval supports any data type and any function present in the langauge, for which arguments default to lazy evaluation (I've written an evalargs decorator to do otherwise), my eq supports any number of expressions, and I've implemented Do but not used it in the example. I could go on and see how I can wrap Eval in functions to get nested scopes.



5  Name: Anonymous : 2007-04-04 13:56  ID:Heaven


>>4
Does it support comparison of lambda functions?



6  Name: Anonymous : 2007-04-04 15:04  ID:KDfc/km0


>>5
Yes, for native functions f1, f2: f1.func_code.co_code == f2.func_code.co_code, to compare lists l1 and l2 use just l1 == l2



7  Name: Anonymous : 2007-04-04 16:59  ID:aEyv6yT0


This sucks but I'm posting it anyway because I spent so much time on it.

{-# OPTIONS_GHC -fglasgow-exts #-}module Main whereimport Control.Monad.Stateimport Control.Monad.Errorimport Control.Monadimport qualified Data.Map as Mimport System.IOimport System.Exitdata Exp = Num  Int         | Eq   Exp Exp         | Bind String Exp Exp         | Var  String         | Add  Exp Exp         | T         | F       deriving (Eq, Read)instance Show Exp where    show (Num a) = show a    show       _ = fail "Cannot show that."type PContext = M.Map String Exptype PError   = ErrorT String IOtype PState   = StateT PContext PError Expeval :: Exp -> PStateeval n@(Num a) = return neval T = return $ Num 0eval F = return $ Num 1eval (Bind s a b) = do    modify (M.insert s a)    c <- eval b    return ceval (Var s) = do    dict <- get    case M.lookup s dict of      Just  a -> return a      Nothing -> fail "No such variable"eval (Add a b) = do    (Num a') <- eval a    (Num b') <- eval b    return $ Num $ a' + b'eval (Eq a b) = do    a' <- eval a    b' <- eval b    return $ if a' == b' then T else Feval _ = fail $ "Nuhuh. Something went wrong."io         = liftIOprompt     = io $ putStr "> "flush      = io $ hFlush stdoutreadPrompt = io getLineloop :: PStateloop = do prompt          flush          line <- readPrompt          case line of              "quit" -> io $ exitWith ExitSuccess              l      -> do let mayhap = reads l                           if null mayhap                             then io $ putStrLn "No parse"                             else do e <- eval $ fst $ last $ mayhap                                     io $ print e                           loop       `catchError` (\e -> do io $ putStrLn e                              loop)main :: IO ()main = do runErrorT (evalStateT loop M.empty)          return ()



8  Name: Anonymous : 2007-04-10 08:34  ID:I25dQBhL


http://img.4chan.org/b/res/24160543.html

FAP TO A JAVA BOOK!



9  Name: Anonymous : 2007-04-23 19:12  ID:bu92yGwW


Let's fap some more:
http://www.ibiblio.org/obp/py4fun/lisp/lisp.html



10  Name: Anonymous : 2007-04-23 19:53  ID:BUrnyvwc


>>8
404. You should know better than to link to a file on /b/.



11  Name: Anonymous : 2009-01-14 15:20 


No



12  Name: Anonymous : 2009-01-14 15:21 


lazy evaluation
HASKELL. HASKELL NOMADS.



13  Name: Anonymous : 2009-08-17 00:10 


Lain.



14  Name: Anonymous : 2011-02-04 18:06 






15  Name: Anonymous : 2012-03-25 09:59 


All work and no play makes Jack a dull boy

All work and no play makes Jack a dull boyAll 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 boyAll 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 boyAll 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 boyAll 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 boyAll 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 boyAll 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

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