I think we're at a crossroad - with some more fermentation and activity, we could build and go forward. There is *a lot* more content in the lectures than we have touched upon in the lectures - we've only scratched the surface of functional programming here! Without this, however, and with the course at MIT ending soon, we could easily get into a cycle of reduced activity, reduced readership, and a hibernation until next January.

Please chime in with any ideas (even half-baked) you might have here.

And we can also think more broadly, beyond this particular course, about how to use the forum as a place to think about and teach category theory and other math.

]]>is anyone attending the course remotely? So far I find it very interesting and well taught.

http://brendanfong.com/programmingcats.html

Cheers,

Ubaldo

]]>First, I would like to thank all people involved in the organization of this class, especially the three instructors, and for making the videos and the material available for remote participants. This is fantastic! I particularly appreciate the concerns about making this understandable to mathematicians as well as computer scientists.

I have two questions about Definition 1.72 (page 33 of the companion notes http://brendanfong.com/programmingcats_files/cats4progs-DRAFT.pdf), where the category **Hask** is defined:

1) The hom-sets *Hask(A, B)* are defined as the set of all compiling Haskell functions *A -> B* which terminate for every input. If I understand correctly, it would mean that we exclude functions that return infinite lists, for instance `f :: Int -> [Int]`

defined by `f n = [n..]`

? Shouldn't these functions also be included in **Hask**? Or is it a reasonable assumption to exclude them for sake of simplicity?

2) In page 34, it is mentioned that "[...] we believe we have circumvented his objections. Please let us know if we’ve missed anything!", referring to the blog post http://math.andrej.com/2016/08/06/hask-is-not-a-category/. I am not sure I understand how you answered to the following objection:

`Presumably “function” here means “closed expression”. It is then`

`immediately noticed that there is a problem because the supposed`

`identity morphisms do not actually work correctly:`

`seq undefined () = undefined and seq (undefined . id) () = (),`

`therefore we do not have undefined . id = undefined.`

Is it possible to have more details about that? I can accept the other assumptions, but this one seems more problematic to accept **Hask** as a category. I'm not very familiar with `seq`

and strict evaluation, but why do we have `seq (undefined . id) () = ()`

instead of `seq (undefined . id) () = undefined`

.

Thank you!

Alexandre B.M.

]]>Brendan mentioned shapes could be used to probe other objects. For the Set category there is a special terminal object (the 1-point, a singleton set) that can be used to point all the elements of a set. One might use n-points instead of singletons but it turns out sets are determined completely by 1-points (since n-points can be recursively obtained from 1-points) . Also, we know this is not true for all categories: knowing about the points of an object is insufficient to count as knowing its elements (construed broadly).

I'd like to know if is possible (and how) to determine the minimal shape collection required to know a category. I haven't watched beyond lecture 2, so there might be something I am missing.

Also, would you mind giving an example of how the dual of probe ("observer") operates? Shapes in the context of generalized elements operate as imaging instruments for categories, but I am not sure about the interpretation of the dual case where what you change is the object under study and not the shape.

Thanks.

]]>They are teaching category theory and Haskel programming in tandem, from the ground up. YouTube video lectures are linked there.

We are glad to be hosting as the discussion forum for the course!

There are two discussion categories for the course:

Here is a link to an editable syllabus page on the Azimuth wiki, which at present is very incomplete. Feel free to update it with relevant information.

]]>