s*****r 发帖数: 43070 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: swjtuer (码农的小船说翻就翻), 信区: JobHunting
标 题: 连王垠都被P了,老中码农这行真是没得混
发信站: BBS 未名空间站 (Wed May 10 22:35:53 2017, 美东)
看他贴的离职协议,只给了10天时间考虑,还要求用快信寄出。字里行间,毫不客气,
没有缓和的语气,每句都让人不爽
老中在这行真是惨,干苦活脏活,还要听话,最好还会舔,不许有意见,不然就滚蛋
This Separation Agreement and Full and Final Release of Claims (“Agreement
”) is presented to
you on April 27, 2017. To accept this Agreement, please sign, date, and
return it to XXXX XXXX via overnight mail, with delivery confirmation, by
May 7, 2017. Alternatively, you may return the signed Agreement to XXXX XXXX
via electronic means by May 7, 2017 and send the original via U.S. regular
mail no later than one business day after the electronic transmission. | T**********s 发帖数: 2135 | 2 肿么看出网银玛德牛逼的,
凭他的博客?
Agreement
【在 s*****r 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: swjtuer (码农的小船说翻就翻), 信区: JobHunting : 标 题: 连王垠都被P了,老中码农这行真是没得混 : 发信站: BBS 未名空间站 (Wed May 10 22:35:53 2017, 美东) : 看他贴的离职协议,只给了10天时间考虑,还要求用快信寄出。字里行间,毫不客气, : 没有缓和的语气,每句都让人不爽 : 老中在这行真是惨,干苦活脏活,还要听话,最好还会舔,不许有意见,不然就滚蛋 : This Separation Agreement and Full and Final Release of Claims (“Agreement : ”) is presented to : you on April 27, 2017. To accept this Agreement, please sign, date, and
| P**********8 发帖数: 1566 | 3 这网银就是一情商为零的傻逼,所以混得不如郭文贵的万分之一。 | w*******e 发帖数: 15912 | 4 据说99%的码工见了王垠的40行code之后五花大绑自惭形秽:
王垠40行代码解析
http://wineway.pw/project1/2017/04/24/1/
;; A simple CPS transformer which does proper tail-call and does not
;; duplicate contexts for if-expressions.
;; author: Yin Wang ([email protected]/* */)
(load "pmatch.scm")
(define cps
(lambda (exp)
(letrec
([trivial? (lambda (x) (memq x '(zero? add1 sub1)))]
[id (lambda (v) v)]
[ctx0 (lambda (v) `(k ,v))] ; tail context
[fv (let ([n -1])
(lambda ()
(set! n (+ 1 n))
(string->symbol (string-append "v" (number->string n)))))]
[cps1
(lambda (exp ctx)
(pmatch exp
[,x (guard (not (pair? x))) (ctx x)]
[(if ,test ,conseq ,alt)
(cps1 test
(lambda (t)
(cond
[(memq ctx (list ctx0 id))
`(if ,t ,(cps1 conseq ctx) ,(cps1 alt ctx))]
[else
(let ([u (fv)])
`(let ([k (lambda (,u) ,(ctx u))])
(if ,t ,(cps1 conseq ctx0) ,(cps1 alt ctx0))))
])))]
[(lambda (,x) ,body)
(ctx `(lambda (,x k) ,(cps1 body ctx0)))]
[(,op ,a ,b)
(cps1 a (lambda (v1)
(cps1 b (lambda (v2)
(ctx `(,op ,v1 ,v2))))))]
[(,rator ,rand)
(cps1 rator
(lambda (r)
(cps1 rand
(lambda (d)
(cond
[(trivial? r) (ctx `(,r ,d))]
[(eq? ctx ctx0) `(,r ,d k)] ; tail call
[else
(let ([u (fv)])
`(,r ,d (lambda (,u) ,(ctx u))))])))))]))
])
(cps1 exp id))))
;;; tests
;; var
(cps 'x)
(cps '(lambda (x) x))
(cps '(lambda (x) (x 1)))
;; no lambda (will generate identity functions to return to the toplevel)
(cps '(if (f x) a b))
(cps '(if x (f a) b))
;; if stand-alone (tail)
(cps '(lambda (x) (if (f x) a b)))
;; if inside if-test (non-tail)
(cps '(lambda (x) (if (if x (f a) b) c d)))
;; both branches are trivial, should do some more optimizations
(cps '(lambda (x) (if (if x (zero? a) b) c d)))
;; if inside if-branch (tail)
(cps '(lambda (x) (if t (if x (f a) b) c)))
;; if inside if-branch, but again inside another if-test (non-tail)
(cps '(lambda (x) (if (if t (if x (f a) b) c) e w)))
;; if as operand (non-tail)
(cps '(lambda (x) (h (if x (f a) b))))
;; if as operator (non-tail)
(cps '(lambda (x) ((if x (f g) h) c)))
;; why we need more than two names
(cps '(((f a) (g b)) ((f c) (g d))))
;; factorial
(define fact-cps
(cps
'(lambda (n)
((lambda (fact)
((fact fact) n))
(lambda (fact)
(lambda (n)
(if (zero? n)
1
(* n ((fact fact) (sub1 n))))))))))
;; print out CPSed function
(pretty-print fact-cps)
;; =>
;; '(lambda (n k)
;; ((lambda (fact k) (fact fact (lambda (v0) (v0 n k))))
;; (lambda (fact k)
;; (k
;; (lambda (n k)
;; (if (zero? n)
;; (k 1)
;; (fact
;; fact
;; (lambda (v1) (v1 (sub1 n) (lambda (v2) (k (* n v2))))))))))
;; k))
((eval fact-cps) 5 (lambda (v) v))
;; => 120
【在 T**********s 的大作中提到】 : 肿么看出网银玛德牛逼的, : 凭他的博客? : : Agreement
| s*****V 发帖数: 21731 | |
|