Slide 1

Slide 1 text

The Rise of Pure FP on the JVM

Slide 2

Slide 2 text

hi i’m @jyothsnasrin I UX ∩ PLs

Slide 3

Slide 3 text

What constitutes a Programming Language? Core Language Community PL Tooling

Slide 4

Slide 4 text

Core Language Community PL Tooling • Statically vs Dynamically Typed • FP vs OOP • Native vs Virtual Machine • Semicolons vs Indentation Core Language

Slide 5

Slide 5 text

• Package Manager • IDE Support • Error Messages • Trace bugs Tooling Core Language Community PL Tooling

Slide 6

Slide 6 text

Community Core Language Community PL Tooling • Documentation • Libraries • Reddit and Twitter • Active Chat Rooms

Slide 7

Slide 7 text

Human Beings Core Language Community PL Developer Tooling

Slide 8

Slide 8 text

User Experience Core Language Community PL User Experience Developer Tooling

Slide 9

Slide 9 text

Eta Overview • Glasgow Haskell Compiler • Java Virtual Machine • Haskell packages • Industrial use

Slide 10

Slide 10 text

Core Language Community Tooling PL

Slide 11

Slide 11 text

Core Language Community Tooling PL

Slide 12

Slide 12 text

Core Language • Purity • Lazy • Typed • FFI

Slide 13

Slide 13 text

Purity A pure function always returns back the same output for a given input

Slide 14

Slide 14 text

Purity

Slide 15

Slide 15 text

Refactor fearlessly!

Slide 16

Slide 16 text

Laziness A lazy language will only evaluate an expression when absolutely required to move on with the rest of the program.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Strict Evaluation

Slide 19

Slide 19 text

Lazy Evaluation

Slide 20

Slide 20 text

Lazy Evaluation

Slide 21

Slide 21 text

Practical Laziness

Slide 22

Slide 22 text

Let the data flow fix the order!

Slide 23

Slide 23 text

Types Types are labels for data in your program so that you can describe precisely what your functions are doing.

Slide 24

Slide 24 text

Base Types

Slide 25

Slide 25 text

Function Types

Slide 26

Slide 26 text

IO Type

Slide 27

Slide 27 text

Shift runtime errors to compile time!

Slide 28

Slide 28 text

Java Interop We need a way to interact with Java that plays nicely with Eta’s features.

Slide 29

Slide 29 text

Java Code Sample

Slide 30

Slide 30 text

Java Interop - Imports

Slide 31

Slide 31 text

Java Interop - JWT

Slide 32

Slide 32 text

Java Interop - FFI

Slide 33

Slide 33 text

Java Interop Example

Slide 34

Slide 34 text

Direct Java Interop #647

Slide 35

Slide 35 text

Interop with Java securely!

Slide 36

Slide 36 text

Core Language Community Tooling PL

Slide 37

Slide 37 text

Tooling • Error Messages • Installation Methods • IDE Support • Etlas • Debugging • Java to Eta Code

Slide 38

Slide 38 text

Error Messages

Slide 39

Slide 39 text

Installation Methods

Slide 40

Slide 40 text

IDE Support

Slide 41

Slide 41 text

Etlas • Version Control • Hash based dependency management

Slide 42

Slide 42 text

Version Control

Slide 43

Slide 43 text

Dependency Management

Slide 44

Slide 44 text

Debugging

Slide 45

Slide 45 text

Java to Eta code #869

Slide 46

Slide 46 text

Java Code Eta Code Java to Eta code

Slide 47

Slide 47 text

Java Code Eta Code Java to Eta code

Slide 48

Slide 48 text

Java Code Eta Code Java to Eta code

Slide 49

Slide 49 text

Java Code Eta Code Java to Eta code

Slide 50

Slide 50 text

Tool to convert Java to Eta code!

Slide 51

Slide 51 text

Core Language Community Tooling PL

Slide 52

Slide 52 text

Community • Documentation • Tutorials • Chat Rooms • Social Media

Slide 53

Slide 53 text

Documentation

Slide 54

Slide 54 text

Tutorials

Slide 55

Slide 55 text

Chat Rooms

Slide 56

Slide 56 text

Social Media

Slide 57

Slide 57 text

The Future Direct Java Interop IDE Support Documentation

Slide 58

Slide 58 text

Emotional Experience

Slide 59

Slide 59 text

Cross Platform in Eta Native App JVM App Android App

Slide 60

Slide 60 text

Game Logic Graphics API Game Logic Cross Platform in Eta

Slide 61

Slide 61 text

Native App JVM App Android App Same Game Logic but different Graphics API Cross Platform in Eta

Slide 62

Slide 62 text

Thank you :)