×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 :)