Sticking Functions Where They Donʼt Belong

What does pure data mean? and how the heck do we stick functions in there? For me, pure data means a type that does or can implement: Show , to serialize the whole internal structure. NFData , to make sure the structure is fully evaluated (forces all the lazy thunks). Aside about NFData for functions There were a few debates around whether the shallow WHNF instance for functions should be allowed…