Whiteboard problems in pure Lambda Calculus (2017)
jtolio.com
jtolio.com
However, to me, this post was hard to read. Wikipedia https://en.wikipedia.org/wiki/Lambda_calculus provides a much better introduction: from informal motivation to formal descriptions. My 2c.
Seriously though, I do not know Lisp, but if you know OCaml you probably have a good feel for lambda calculus just from practical application of the language. My 2c.
I'm surprised than anyone thinks this. Unless you're in a very specialized area, it's about as useful as getting practice with writing algorithms using Turing Machines.
(Yes, it offers a very different perspective to the usual Von Neumann machine, but learning graph reduction as evalation is just as valuable, if not more.)
(λU.(λY.(λvoid.(λ0.(λsucc.(λ+.(λ*.(λ1.(λ2.(λ3.(λ4.(λ5.(λ6.(λ7.(λ8.(λ9.(λ10.(λnum.(λtrue.(λfalse.(λif.(λnot.(λand.(λor.(λmake-pair.(λpair-first.(λpair-second.(λzero?.(λpred.(λ-.(λeq?.(λ/.(λ%.(λnil.(λnil?.(λcons.(λcar.(λcdr.(λdo2.(λdo3.(λdo4.(λfor.(λprint-byte.(λprint-list.(λprint-newline.(λzero-byte.(λitoa.(λfizzmsg.(λbuzzmsg.(λfizzbuzzmsg.(λfizzbuzz.(fizzbuzz (((num 1) 0) 1)) λn.((for n) λi.((do2 (((if (zero? ((% i) 3))) λ_.(((if (zero? ((% i) 5))) λ_.(print-list fizzbuzzmsg)) λ_.(print-list fizzmsg))) λ_.(((if (zero? ((% i) 5))) λ_.(print-list buzzmsg)) λ_.(print-list (itoa i))))) (print-newline nil)))) ((cons (((num 0) 7) 0)) ((cons (((num 1) 0) 5)) ((cons (((num 1) 2) 2)) ((cons (((num 1) 2) 2)) ((cons (((num 0) 9) 8)) ((cons (((num 1) 1) 7)) ((cons (((num 1) 2) 2)) ((cons (((num 1) 2) 2)) nil))))))))) ((cons (((num 0) 6) 6)) ((cons (((num 1) 1) 7)) ((cons (((num 1) 2) 2)) ((cons (((num 1) 2) 2)) nil))))) ((cons (((num 0) 7) 0)) ((cons (((num 1) 0) 5)) ((cons (((num 1) 2) 2)) ((cons (((num 1) 2) 2)) nil)))))
Unless, of course, you're looking for a long term contractor and not an employee.
Getting someone to do actual work during an interview is also a no-no. As soon as someone walks through your door and you ask them to do actual work, they're your employee, period. They are now automatically entitled to compensation and a minimum severance period. You can interview people in almost any way you want, but as soon as it involves doing actual work, you're toast. This may be different where you live, but it strikes me as being unethical at the very least.
Hiring is hard. But exploiting people (by expecting them to do actual work, homework, forcing them into temporary contracting) is not the answer.
EDIT: this would be nice on the other hand to get to experience the 'real' culture and work environment at a place before I decide to commit to them.
[1] http://www.nyu.edu/projects/barker/Iota/zot.html [2] https://en.wikipedia.org/wiki/Iota_and_Jot