A derivative is linearisation, and differential calculus is essentially linear algebra, ... See Freya Holmér - Why Can't You Multiply Vectors? and Freya Holmér on Continuity of Splines . See also the MIT OCW page: Matrix Calculus For Machine Learning And Beyond (Alan Edelman, Steven G. Johnson) Subscribe to The Julia Programming Language . Alan Edelman talking about expressing mathematics as computer code. The idea is that you can use computer languages to communicate mathematical ideas precisely to other people. See my comments about functional programming languages here: https://prooftoys.org/ian-grant/hm/ Subscribe to TEDx Talks .
I mean, how to get the best of the two different philosophies of computation. One is based on typed programming languages and the other on engineering with diagrams . This is about practical computing and the cost and feasibility of software development in general. Here is the problem: We have a lot of algorithms which can all be described abstractly using some sort of pseudocode, or perhaps using some particular language (usually Python!). These algorithms are often well-studied and a lot is known about them in terms of their computational complexity in time and space. Substantive practical software systems invariably employ many such algorithms, often implemented in libraries with more or less well-specified APIs. But very few of these libraries are capable of interoperating because they are either packages written in some specific programming language like Java or Haskell, say, or they are written in C and used as object code, or they are written in an interpreted language like Sc...
Listening to Freya Holmér last night I started to get glimmers of an idea I had long ago about how to represent vector spaces in computational processes using this recursive abstract type : abstype 'a point = POINT of {getx : 'a vector, diff : 'a point -> 'a point, move : 'a point -> 'a point, scale : 'a -> 'a point, proj : 'a point -> 'a} with fun new i (op +) (op -) (op * ) dot = let fun self x = POINT {getx = x, move = fn (POINT pr) => (self (x + (#getx pr))), diff = fn (POINT pr) => self (x - (#getx pr)), scale = fn i => (self (x * i)), proj = fn (POINT pr) => ...
Comments
Post a Comment