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