hwechtla-tl:
Nettipäiväkirja 13.09.2018
SmallFP-muistiinpanot.
Ocaml REborn: full-stack applications with ReasonML
- 2016 julkaistu Reason, "new interface to OCaml", Facebookin projekti
- (oma syntaksi OCamlille?)
- "Mitä vikaa Clojuressa": no tarvitsin turvallisemman kielen jossa
kääntäjä auttaa
- Datomic kehuttu, "ihan kuin tietokanta olisi suoraan omassa kielessä"
- Jälleen tämä dikotomia: tyypit ovat mahtavia, mutta
marshalling/serialisointi rikkoo ne. Eli dynaamiset kielet tekevät
tosi helppoa tietorakenteiden jakamisesta verkon yli.
- ocaml-graphql-server: toteuttaa GraphQL-skeemat OCaml-tyyppeinä
- eli varsinainen motivaatio on jakaa tietotyyppimääritykset (skeemat)
palvelimen ja asiakkaan välillä
Interactive, functional, efficient number crunching on GPU
- Kirjastoja, joilla GPU-ohjelmointi helpottuu Clojuressa: ClojureCL,
ClojureCUDA, Neanderthal, Bayadera
- Pohjimmiltaan aivan samoja ratkaisuja kuin Pythonin laskentatorni:
"alternate hard and soft layers", NumPy, PyCUDA
- CUDAssa on oma DSL (eräänlainen C-kieli), jolla määritetään
GPU-algoritmeja
- näiden "CUDA-kerneleiden" linkitys tavallisiksi Clojure-funktioiksi
KernelF: functional framework for writing DSL's
- on todella vaikeaa tehdä DSL ei-ohjelmoijille
- "DSL for non-programmers needs IDE support"
- MPS on jonkinlainen rakenteisen datan editointisysteemi
- MPS "häviää excelille automaatiossa" koska makrot/ilmaukset
- mutta tämä on ihan älytön väite, koska oikeasti tärkeämpää on
editoinnin UX, joka on kiinni vaikka mistä muusta
- KernelF yrittää olla "määrittelykieli, joka keskittyy DSL-käyttäjiä
kiinnostaviin asioihin" (vähän kuin XML Schema), eli lisää höpöhöpöä
- attempt type: unioni normaaleista paluuarvoista yhdistettynä
mahdollisiin poikkeuspalautuksiin, käytännössä reifioituihin
poikkeuksiin
- vapaat, tavallaan SL-pohjaiset syntaktiset sokerit
- "kernelF on tarkoitettu kieleksi, jolla ei-ohjelmoijille on helppoa
kirjoittaa oikeellisia ohjelmia"
I used Elm in production and it cost me my job
- Elm oli liian kätevä ja stabiili, ei mitään syytä pitää koodaajaa
- mutta! 0.19 rikkoo kaiken! yay, nyt saa taas tehdä töitä
Regular expressions of types
- miten määritetään find-komennon tyyppi?
- ehdotus: (s/cat (s/optional s/union :L :H) String (s/many expression)
- tyyppiteoria logiikan kautta: miten määritetään tyyppien merkitys?
- SL:ien määrittely päättelysääntöinä: "konteksti" = "täsmättämä
merkkijono", SL = siitä seuraava fakta.
- Pyrkii määrittämään yhden ison tyypin, johon pystyy upottamaan kaikki
tyypit
- konkatenaatio on assosiatiivinen, mutta pari ei!
- näin voi määrittää heterogeenisia listoja määrittämällä summatyypin
osana tyypin SL-määrittelyä
- katenaatio onkin Cons
- SL-määrittelyn pointti on ehkä ennen kaikkea se, että niillä on kätevä
inline-syntaksi.
- ei mitään järkeä oikeastaan laventaa kontekstittomiin kieliin, koska
sellainen tyyppimäärittelyjärjestelmä Haskellissa jo on.
Purely functional DevOps with Dhall
- DevOps: "write code -> huge side effects"
- Miten oikeasti voi saada deklaratiivisia ympäristökuvauksia?
- Pitää pitää konfiguraatiokieli niin heikkona, ettei tule yleisiä
koodin ongelmia?
- Dhall on JSON + funktiot, tyypit, ja importit
- Varmaan jonkinlainen template-kieli
- Tietorakenteiden template-kieli?
- importeissa on SHA256-varmisteet joilla voi huolehtia että se
tarkoittaa vielä samaa kuin ennen
- Fabrizion pointti on tuottaa kaikki formaatteja Dhall:sta :)
- Esimerkiksi Dhall-esiprosessori Kubernetes-konffikselle
- hieno tapa leiskata JSONia jossa pilkut on samalla tasolla kuin ne
sulkeet joiden sisällä ne on
Meetings with remarkable trees
- "majestic talk about very complicated data structures" -> rewrite this
to be more fun
- pysyvät tietorakenteet: tietorakenteet, jotka säilyttävät tilansa, kun
niitä muutetaan
- bagwell trie: applikatiivinen taulukko (sekvenssi)
- hash-array map trie: Rich Hickey toteutti nämä
- bit-mapped vector trie: "index prefix trie"
kommentoi
(viimeksi muutettu 14.09.2018 10:18)