Identity GS
Identity GS
  • 7
  • 5 242
MSP101 - Monadic programs as container morphisms
Programs often take the shape of a bi-directional relation between input and output. If we take this view, we can see programs as input-output transformations and build large programs by converting seemlessly between those input-output interfaces. This view enjoys the same monadic properties as programming with plain functions and types but carries a lot more structure. This talk showcases some uses and programs that take advantage of the input-output structure of containers to implement software as a container morphisms.
Переглядів: 261

Відео

Boilerplate-free servers using lenses (MSP 101)
Переглядів 2542 роки тому
I presented my work on servers using lenses for MSP 101, this is the recoding of the presentation. msp 101: msp.cis.strath.ac.uk/msp101.html me: andre_videla the library: gitlab.com/avidela/recombine
Dependent Lenses for servers (SPLS 2021)
Переглядів 3293 роки тому
A presentation about Dependent Para Lenses in the context of server API descriptions. Wouldn't it be nice if writing servers was as easy as telling the computer what the API look like? This presentation gets into the details of how to achieve that using parameterised dependent lenses and why they are the perfect tool for the job. 00:00 Introduction 00:54 What is a server? 04:10 What is a depend...
Install Idris2 on Windows using WSL - Tutorial
Переглядів 7523 роки тому
Thanks for watching this short tutorial about how to install Idris2 on windows using WSL. Troubleshooting: - If installing WSL fails, try using the manual steps detailed here docs.microsoft.com/en-us/windows/wsl/install-manual The written instructions are here: github.com/idris-lang/Idris2/blob/main/INSTALL.md Summary: - install WSL - update apt : sudo apt update - install dependencies : sudo a...
Optics for servers
Переглядів 8143 роки тому
A presentation about a server library in Idris leveraging first-class types and lenses in order to declare, implement and extend APIs and their implementation. Web servers are extremely common and a large amount of businesses rely on deploying, implementing and updating web servers. Using dependent types and noting that webservers expose APIs that share property with lenses, we can write a libr...
MSP talk, Category theory and STLC
Переглядів 2623 роки тому
An introduction to category theory motivated by the Simply Typed Lambda Calculus Notes available here gitlab.com/avidela/neko/-/raw/main/Notes/Category theory stlc reference.jpg Code available here gitlab.com/avidela/neko/-/blob/main/src/Section4Correction.idr
PLUG talk - linear types and runtime performance
Переглядів 2,6 тис.4 роки тому
This talk introduces my master thesis on the Idris2 compiler, introduces linear types and motivates the need for linear types as a way to develop and use performant programming languages. This talk was meant to be given at Glasgow for PLUG: Programming Languages at University of Glasgow.

КОМЕНТАРІ

  • @nagisa_1224
    @nagisa_1224 Місяць тому

    could u tell me how to install Idris2-lsp(used for vscode) on windows?

  • @samuraijosh1595
    @samuraijosh1595 4 місяці тому

    just tell me how to install it natively....

  • @pmarreck
    @pmarreck 5 місяців тому

    Now it just needs an Ecto like thing to talk to Postgres! Or something more clever, of course

  • @lisaencisco7749
    @lisaencisco7749 7 місяців тому

    Yeah, I guess this is the path of least resistance for Win 10. If you have a chance to make a video for the Docker approach (from setup to running), that would be very useful.

  • @alexgryzlov
    @alexgryzlov 7 місяців тому

    Very cool! If you add codata & coinductive reasoning, you also can model stateful and other nice stuff, like objects, infinite lambda-calculi, and fixed-point algorithms :)

  • @kalina1795
    @kalina1795 Рік тому

    "Promo sm"

  • @kunal_chand
    @kunal_chand 2 роки тому

    I hate Idris

  • @Adowrath
    @Adowrath 2 роки тому

    I do wonder how this'd adapt once you move from a global server state towards something more "realistic" involving a database.

  • @ChatterboxBS1
    @ChatterboxBS1 2 роки тому

    I think I am missing something here. You are splitting a string of length N into two parts of length N/2, then insert a bar, resulting in a string of length N+1. So how can you possibly mutate the buffer inplace, since it is too small? In the C example the buffer has length 32 so that happens to work for this specific example, but in general, it won't work, and cause of buffer overrun? Maybe it was more like a theoretical example?

  • @virkony
    @virkony 3 роки тому

    21:34 great visualization of Lens type and their meaning. First time seeing it.

  • @chespinoza1
    @chespinoza1 3 роки тому

    This is great, there should be one for Mac and Linux too 😀

  • @kyspace1024
    @kyspace1024 3 роки тому

    5:37 the brackets are so faint that I almost thought there is a new syntax

  • @kyspace1024
    @kyspace1024 3 роки тому

    Great talk! It would be nice if I get familiar with the server symbols (like slashes and :|:) defined in the lens module beforehand. Where do you recommend us to look at?

  • @133289ify
    @133289ify 3 роки тому

    static reference counter? :)

  • @victorsavu7724
    @victorsavu7724 4 роки тому

    Thanks for your talk! This is the first time I see linear types in a talk. Thanks for clarifying the difference bweteen linear types and quantitative type theory (yes, I watched every Idris2 video I could find). Your example and the open questions in the field reminded me a lot of how things are done in the programming language Rust. Have you by any chance had a look at it? If you did, how would you describe the gap between Rust (which is used in production) and the current state of the art in linear types research (which is what you are doing)?

    • @neopalm2050
      @neopalm2050 2 роки тому

      I'm not the person you asked, but I'll give my two cents anyway. I would say the gap between Rust and "real linear types" is that in Rust you can't make a type that _must_ be handled. There are error types that the linter tells you to handle, but _Rust doesn't have a way to make a type that can't simply be thrown away._ There is the Drop trait that makes something follow a special procedure to be thrown away, but that's different to not letting something be discarded in the first place. For instance, let's say you had some kind of structure that encapsulates an OS resource, which has multiple ways of being returned to the OS, and no good default way to do so that would be fine no matter what. There's no way for Rust to stop you from either leaking this resource, or making the mistake of letting the Drop happen naturally, which might lead to the wrong kind of drop. At least, not outside of asking the linter to shout at you, as well as making Drop panic at runtime, but I'd say this *should* be something you can get the compiler to yell at you for rather than the linter. As for some more advanced linear type things, I think you can have dependent types along with linear types, which would allow you to interleave proofs (such as proofs that memory is allocated i.e. a guarrantee that you won't segfault) with code, which I believe would give the chance for even better runtime, now that a lot of the runtime checks (such as making sure an index is less than the length of a vector) can be done at compile time.

  • @samktalk
    @samktalk 4 роки тому

    Nice talk. Just curious as to whether you might have looked at the Formality language much (also Cedille / Juvix to some extent) and if you had any thoughts on it? It appears to be a reasonable attempt to build a performant proof language. I’d also be interested to hear what you think of their claim of “No Garbage Collection”. The language appears to be based on affine lambdas and I’m very keen to find out what the programming experience would be like writing large-ish programs using only those.

    • @samktalk
      @samktalk 4 роки тому

      Affine Lambdas + lazy copying during reduction