The document discusses definitions of functional programming from multiple sources. Functional programming is defined as programming using only pure functions and immutable values. A pure function is one that depends solely on its input parameters and algorithm to produce output, without side effects like modifying external state or performing I/O. Pure functions have properties of being total, deterministic, and inculpable/having no side effects. Functional programming involves writing programs as compositions of pure functions.
download for better quality - Learn how to use an Applicative Functor to handle multiple independent effectful values through the work of Sergei Winitzki, Runar Bjarnason, Paul Chiusano, Debasish Ghosh and Adelbert Chang
Writer Monad for logging execution of functionsPhilip Schwarz
download for better quality - Learn how to use the Writer monad to log (trace) the execution of functions through the work of Bartosz Milewski and Alvin Alexander
non-strict functions, bottom and scala by-name parametersPhilip Schwarz
Download for perfect quality.
Non strict functions, bottom and scala by-name parameters - ‘a close look’, through the work of Runar Bjarnason, Paul Chiusano, Martin Odersky, Bill Venners, Lex Spoon, Alvin Alexander, Mark Lewis and Aleksandar Prokopec.
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala Part 2 ...Philip Schwarz
(download for perfect quality) See aggregation functions defined inductively and implemented using recursion.
Learn how in many cases, tail-recursion and the accumulator trick can be used to avoid stack-overflow errors.
Watch as general aggregation is implemented and see duality theorems capturing the relationship between left folds and right folds.
Through the work of Sergei Winitzki and Richard Bird.
This version corrects the following issues:
slide 32: = reverse --> reverse =
Slide 33: 100_000 -> 1_000_000
It also adds slides 36, 37 and 38
(download for flawless quality) Learn more about the canonical definition of the Applicative typeclass by looking at a great Haskell validation example by Chris Martin and Julie Moronuki - Then see it translated to Scala.
Scala code: https://github.com/philipschwarz/applicative-functor-part-2-scala
--- Errata ---
Slide #41: the definition of the right shark operator contains a defect - see https://twitter.com/philip_schwarz/status/1416127396659478539
download for better quality - Learn how to use an Applicative Functor to handle multiple independent effectful values through the work of Sergei Winitzki, Runar Bjarnason, Paul Chiusano, Debasish Ghosh and Adelbert Chang
Writer Monad for logging execution of functionsPhilip Schwarz
download for better quality - Learn how to use the Writer monad to log (trace) the execution of functions through the work of Bartosz Milewski and Alvin Alexander
non-strict functions, bottom and scala by-name parametersPhilip Schwarz
Download for perfect quality.
Non strict functions, bottom and scala by-name parameters - ‘a close look’, through the work of Runar Bjarnason, Paul Chiusano, Martin Odersky, Bill Venners, Lex Spoon, Alvin Alexander, Mark Lewis and Aleksandar Prokopec.
Folding Unfolded - Polyglot FP for Fun and Profit - Haskell and Scala Part 2 ...Philip Schwarz
(download for perfect quality) See aggregation functions defined inductively and implemented using recursion.
Learn how in many cases, tail-recursion and the accumulator trick can be used to avoid stack-overflow errors.
Watch as general aggregation is implemented and see duality theorems capturing the relationship between left folds and right folds.
Through the work of Sergei Winitzki and Richard Bird.
This version corrects the following issues:
slide 32: = reverse --> reverse =
Slide 33: 100_000 -> 1_000_000
It also adds slides 36, 37 and 38
(download for flawless quality) Learn more about the canonical definition of the Applicative typeclass by looking at a great Haskell validation example by Chris Martin and Julie Moronuki - Then see it translated to Scala.
Scala code: https://github.com/philipschwarz/applicative-functor-part-2-scala
--- Errata ---
Slide #41: the definition of the right shark operator contains a defect - see https://twitter.com/philip_schwarz/status/1416127396659478539
My summary of Natural Transformations based on definitions found in an introductory book on Category theory and on Bartosz Milewski’s great lecture on the subject.
NOTE: Download for better quality.
Compositionality and Category Theory - a montage of slides/transcript for sec...Philip Schwarz
I made a montage of slides/transcript for sections of the Scala eXchange 2017 closing keynote by Rúnar Bjarnason (https://twitter.com/runarorama): "Composing Programs"
Monad as functor with pair of natural transformationsPhilip Schwarz
Explains why a Monad is a functor with a pair of natural transformations (plus associativity and identity laws). It then explores this by looking at an example, with code in Scala.
Inspired and based on videos/publications by Bartosz Milewski, Rúnar Bjarnason and Rob Norris.
Download for better quality.
(download for flawless quality) A brief introduction to unison, the exciting and innovative new functional programming language.
Wholly based on a talk by Paul Chiusano.
Understand the expression problem
See Haskell and Scala code illustrating the problem
Learn how FP typeclasses can be used to solve the problem
See the Haskell solution to the problem and a translation into Scala
Part 2
Game of Life - Polyglot FP - Haskell - Scala - Unison - Part 3Philip Schwarz
(download for picture-perfect quality) Follow along as Trampolining is used to overcome Stack Overflow issues with the simple IO monad, deepening you understanding of the IO monad in the process. See Game of Life IO actions migrated to the Cats Effect IO monad, which is trampolined in its flatMap evaluation.
Errata:
slide 33: "impure factorial function" should be "initial factorial function"
slide 34: there is a pointless short vertical bar inside a speech bubble
slide 39: "it is till annoying" should be "it is still annoying"
slide 44: "values that we are interested" should be "values that we are interested in"
Download for better quality - Learn about the composition of effectful functions through the work of Bartosz Milewski, Rob Norris, Rúnar Bjarnason and Debasish Ghosh.
‘go-to’ general-purpose sequential collections -from Java To ScalaPhilip Schwarz
The simple idea of this slide deck is that it collects in a single place quite a bit of information that can be used to gain a basic understanding of some key differences between the ’goto’ sequential collections of Java and Scala.
Errata:
* the twitter handle of Daniel Westheide is @kaffeecoder and not @cafeecoder
* on slide 35, the numbers 215, 220, 225 and 230, should be 2^15, 2^20, 2^25 and 2^30 respectively
* on slide 54, the bottom left node should be green rather than black
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...Philip Schwarz
Follow in the footsteps of refactoring guru Martin Fowler as he improves the design of a program in a simple yet instructive refactoring example whose JavaScript code and associated refactoring is herein adapted to Java.
Based on the second edition of ‘the’ Refactoring book.
In the process, we’ll be using the following Java language features incorporated into long-term support (LTS) version JDK 17 (the previous LTS version being JDK 11):
Text blocks (JDK 15)
Records (JDK 16)
Sealed interfaces (JDK 17)
Here is a github repository with the whole refactoring, from start to finish, following the steps seen in the slides https://github.com/philipschwarz/refactoring-a-first-example-java
Function Applicative for Great Good of Palindrome Checker Function - Polyglot...Philip Schwarz
Embark on an informative and fun journey through everything you need to know to understand how the Applicative instance for functions makes for a terse palindrome checker function definition in point-free style.
Point free or die - tacit programming in Haskell and beyondPhilip Schwarz
I really liked Amar Shah's talk on point-free style as a tool for producing tacit code which communicates better because it is quiet and so easier to understand. https://www.youtube.com/watch?v=seVSlKazsNk
This slide deck is my effort to capture the content of the talk in a way that can aid its consumption, digestion and retention.
Download for better quality.
Game of Life - Polyglot FP - Haskell, Scala, Unison - Part 2 - with minor cor...Philip Schwarz
(download for picture-perfect quality) Follow along as the impure functions in the Game of Life are translated from Haskell into Scala, deepening you understanding of the IO monad in the process.
This is simply a copy of the original with an error corrected on slides 3 and 52, which were supposed to show Scala code and instead showed the Haskell equivalent! Plus removal of a few minor aesthetic imperfections.
Original: https://www.slideshare.net/pjschwarz/game-of-life-polyglot-fp-haskell-scala-unison-part-2
The idea of this talk is presenting the Golang functional features, the pros e cons of apply functional paradigm in Golang. Do you want to improve readability and maintainability of your code using more functional paradigms? So, come on and let's have a fun time together!
My summary of Natural Transformations based on definitions found in an introductory book on Category theory and on Bartosz Milewski’s great lecture on the subject.
NOTE: Download for better quality.
Compositionality and Category Theory - a montage of slides/transcript for sec...Philip Schwarz
I made a montage of slides/transcript for sections of the Scala eXchange 2017 closing keynote by Rúnar Bjarnason (https://twitter.com/runarorama): "Composing Programs"
Monad as functor with pair of natural transformationsPhilip Schwarz
Explains why a Monad is a functor with a pair of natural transformations (plus associativity and identity laws). It then explores this by looking at an example, with code in Scala.
Inspired and based on videos/publications by Bartosz Milewski, Rúnar Bjarnason and Rob Norris.
Download for better quality.
(download for flawless quality) A brief introduction to unison, the exciting and innovative new functional programming language.
Wholly based on a talk by Paul Chiusano.
Understand the expression problem
See Haskell and Scala code illustrating the problem
Learn how FP typeclasses can be used to solve the problem
See the Haskell solution to the problem and a translation into Scala
Part 2
Game of Life - Polyglot FP - Haskell - Scala - Unison - Part 3Philip Schwarz
(download for picture-perfect quality) Follow along as Trampolining is used to overcome Stack Overflow issues with the simple IO monad, deepening you understanding of the IO monad in the process. See Game of Life IO actions migrated to the Cats Effect IO monad, which is trampolined in its flatMap evaluation.
Errata:
slide 33: "impure factorial function" should be "initial factorial function"
slide 34: there is a pointless short vertical bar inside a speech bubble
slide 39: "it is till annoying" should be "it is still annoying"
slide 44: "values that we are interested" should be "values that we are interested in"
Download for better quality - Learn about the composition of effectful functions through the work of Bartosz Milewski, Rob Norris, Rúnar Bjarnason and Debasish Ghosh.
‘go-to’ general-purpose sequential collections -from Java To ScalaPhilip Schwarz
The simple idea of this slide deck is that it collects in a single place quite a bit of information that can be used to gain a basic understanding of some key differences between the ’goto’ sequential collections of Java and Scala.
Errata:
* the twitter handle of Daniel Westheide is @kaffeecoder and not @cafeecoder
* on slide 35, the numbers 215, 220, 225 and 230, should be 2^15, 2^20, 2^25 and 2^30 respectively
* on slide 54, the bottom left node should be green rather than black
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...Philip Schwarz
Follow in the footsteps of refactoring guru Martin Fowler as he improves the design of a program in a simple yet instructive refactoring example whose JavaScript code and associated refactoring is herein adapted to Java.
Based on the second edition of ‘the’ Refactoring book.
In the process, we’ll be using the following Java language features incorporated into long-term support (LTS) version JDK 17 (the previous LTS version being JDK 11):
Text blocks (JDK 15)
Records (JDK 16)
Sealed interfaces (JDK 17)
Here is a github repository with the whole refactoring, from start to finish, following the steps seen in the slides https://github.com/philipschwarz/refactoring-a-first-example-java
Function Applicative for Great Good of Palindrome Checker Function - Polyglot...Philip Schwarz
Embark on an informative and fun journey through everything you need to know to understand how the Applicative instance for functions makes for a terse palindrome checker function definition in point-free style.
Point free or die - tacit programming in Haskell and beyondPhilip Schwarz
I really liked Amar Shah's talk on point-free style as a tool for producing tacit code which communicates better because it is quiet and so easier to understand. https://www.youtube.com/watch?v=seVSlKazsNk
This slide deck is my effort to capture the content of the talk in a way that can aid its consumption, digestion and retention.
Download for better quality.
Game of Life - Polyglot FP - Haskell, Scala, Unison - Part 2 - with minor cor...Philip Schwarz
(download for picture-perfect quality) Follow along as the impure functions in the Game of Life are translated from Haskell into Scala, deepening you understanding of the IO monad in the process.
This is simply a copy of the original with an error corrected on slides 3 and 52, which were supposed to show Scala code and instead showed the Haskell equivalent! Plus removal of a few minor aesthetic imperfections.
Original: https://www.slideshare.net/pjschwarz/game-of-life-polyglot-fp-haskell-scala-unison-part-2
The idea of this talk is presenting the Golang functional features, the pros e cons of apply functional paradigm in Golang. Do you want to improve readability and maintainability of your code using more functional paradigms? So, come on and let's have a fun time together!
Functions are the building blocks where every program activity occurs. They are self-contained program segments that carry out some specific, well-defined task. Every C program must have a function c functions list. c functions multiple choice questions
Introduction to C Language - Version 1.0 by Mark John LadoMark John Lado, MIT
The C programming language is a general-purpose, high – level language (generally denoted as structured language). C programming language was at first developed by Dennis M. Ritchie at At&T Bell Labs.
C is one of the most commonly used programming languages. It is simple and efficient therefore it becomes best among all. It is used in all extents of application, mainly in the software development.
Many software's & applications as well as the compilers for the other programming languages are written in C also Operating Systems like Unix, DOS and windows are written in C.
C has many powers, it is simple, stretchy and portable, and it can control system hardware easily. It is also one of the few languages to have an international standard, ANSI C.
This is my very first seminar presentation. It was presented at an event organized by Adama Science And Technology University Computer Science And Engineering Club. Here I discuss the basic concepts in the world of functional programming.
C Programming Language is the most popular computer language and most used programming language till now. It is very simple and elegant language. This lecture series will give you basic concepts of structured programming language with C.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidPhilip Schwarz
The subject of this deck is the small Print[A] program in the following blog post by Noel Welsh: https://www.inner-product.com/posts/direct-style-effects/.
Keywords: "direct-style", "context function", "context functions", "algebraic effect", "algebraic effects", "scala", "effect system", "effect systems", "effect", "side effect", "composition", "fp", "functional programming"
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
For functions that can be defined both as an instance of a right fold and as an instance of a left fold, one may be more efficient than the other.
Let's look at the example of a function 'decimal' that converts a list of digits into the corresponding decimal number.
Erratum: it has been pointed out that it is possible to define the zip function using a right fold (see slide 5).
Tagless Final Encoding - Algebras and Interpreters and also ProgramsPhilip Schwarz
Tagless Final Encoding - Algebras and Interpreters and also Programs - An introduction, through the work of Gabriel Volpe.
Slide deck home: http://fpilluminated.com/assets/tagless-final-encoding-algebras-interpreters-and-programs.html
A sighting of traverseFilter and foldMap in Practical FP in ScalaPhilip Schwarz
Slide deck home: http://fpilluminated.com/assets/sighting-of-scala-cats-traverseFilter-and-foldMap-in-practical-fp-in-scala.html.
Download PDF for perfect image quality.
A sighting of sequence function in Practical FP in ScalaPhilip Schwarz
Slide deck home: http://fpilluminated.com/assets/sighting-of-scala-cats-sequence-function-in-practical-fp-in-scala.html.
Download PDF for perfect image quality.
This talk was presented on Aug 3rd 2023 during the Scala in the City event a ITV in London https://www.meetup.com/scala-in-the-city/events/292844968/
Visit the following for a description, slideshow, all slides with transcript, pdf, github repo, and eventually a video recording: http://fpilluminated.com/assets/n-queens-combinatorial-puzzle-meets-cats.html
At the centre of this talk is the N-Queens combinatorial puzzle. The reason why this puzzle features in the Scala book and functional programming course by Martin Odersky (the language’s creator), is that such puzzles are a particularly suitable application area of 'for comprehensions'.
We’ll start by (re)acquainting ourselves with the puzzle, and seeing the role played in it by permutations. Next, we’ll see how, when wanting to visualise candidate puzzle solutions, Cats’ monoidal functions fold and foldMap are a great fit for combining images.
While we are all very familiar with the triad providing the bread, butter and jam of functional programming, i.e. map, filter and fold, not everyone knows about the corresponding functions in Cats’ monadic variant of the triad, i.e. mapM, filterM and foldM, which we are going to learn about next.
As is often the case in functional programming, the traverse function makes an appearance, and we shall grab the opportunity to point out the symmetry that exists in the interrelation of flatMap / foldMap / traverse and flatten / fold / sequence.
Armed with an understanding of foldM, we then look at how such a function can be used to implement an iterative algorithm for the N-Queens puzzle.
The talk ends by pointing out that the iterative algorithm is smarter than the recursive one, because it ‘remembers’ where it has already placed previous queens.
Kleisli composition, flatMap, join, map, unit - implementation and interrelat...Philip Schwarz
Kleisli composition, flatMap, join, map, unit. A study/memory aid, to help learn/recall their implementation/interrelation.
Version 2, updated for Scala 3
Nat, List and Option Monoids -from scratch -Combining and Folding -an examplePhilip Schwarz
Nat, List and Option Monoids, from scratch. Combining and Folding: an example.
This is a new version of the original which has some cosmetic changes and a new 7th slide which only differs from slide 6 in that it defines the fold function in terms of the foldRight function.
Code: https://github.com/philipschwarz/nat-list-and-option-monoids-from-scratch-combining-and-folding-an-example
Nat, List and Option Monoids -from scratch -Combining and Folding -an examplePhilip Schwarz
Nat, List and Option Monoids, from scratch. Combining and Folding: an example.
Code: https://github.com/philipschwarz/nat-list-and-option-monoids-from-scratch-combining-and-folding-an-example
The Sieve of Eratosthenes - Part II - Genuine versus Unfaithful Sieve - Haske...Philip Schwarz
When I posted the deck for Part 1 to the Scala users forum, Odd Möller linked to a paper titled "The Genuine Sieve of Eratosthenes", which speaks of the Unfaithful Sieve.
Part 2 is based on that paper and on Richard Bird's faithful Haskell implementation of the Sieve, which we translate into Scala.
Scala code for Richard Bird's infinite primes Haskell program: https://github.com/philipschwarz/sieve-of-eratosthenes-part-2-scala
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...Philip Schwarz
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Haskell, Scala and Java.
Inspired by the example in Scott Wlaschin’s F# book: Domain Modeling Made Functional.
Download for better results.
Java 19 Code: https://github.com/philipschwarz/fruit-salad-and-fruit-snack-ADT-example-java
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
2. 1. A pure function depends only on (a) its declared input parameters and (b) its algorithm to produce its result.
A pure function has no “back doors,” which means:
1. Its result can’t depend on reading any hidden value outside of the function scope, such as another field in the same class or global variables.
2. It cannot modify any hidden fields outside of the function scope, such as other mutable fields in the same class or global variables.
3. It cannot depend on any external I/O. It can’t rely on input from files, databases, web services, UIs, etc; it can’t produce output, such as
writing to a file, database, or web service, writing to a screen, etc.
2. A pure function does not modify its input parameters.
A pure function has no side effects,
meaning that it does not read
anything from the outside world or
write anything to the outside world.
As a result of 1, if a pure function is
called with an input parameter x an
infinite number of times, it will
always return the same result y.
This is unlike an OOP method, which
can depend on other fields in the
same class as the method.
A pure function is a function that depends only on its declared input parameters and its algorithm to produce its output.
It does not read any other values from “the outside world” — the world outside
of the function’s scope — and it does not modify any values in the outside world
Functional programming is a way of writing software applications using only pure functions and immutable values.
FP means programming with pure functions, and a pure function is one that lacks side effects…
A function f with input type A and output type B (written in Scala as a single type: A => B , pronounced “A to B ” or “A arrow B ”) is a computation that relates every value a of type
A to exactly one value b of type B such that b is determined solely by the value of a. Any changing state of an internal or external process is irrelevant to computing the result f(a).
For example, a function intToString having type Int => String will take every integer to a corresponding string. Furthermore, if it really is a function, it will do nothing else.
In other words, a function has no observable effect on the execution of the program other than to compute a result given its inputs; we say that it has no side effects. We
sometimes qualify such functions as pure functions to make this more explicit, but this is somewhat redundant.
FP in Scala
by Paul Chiusano
and Runar Bjarnason
@pchiusano @runarorama
by Sam Halliday
@fommil
by Alvin Alexander
@alvinalexander
Definitions of Functional Programming
1.2 Pure Functional Programming
Functional Programming is the act of writing programs with pure functions. Pure functions have three properties:
• Total: return a value for every possible input
• Deterministic: return the same value for the same input
• Inculpable: no (direct) interaction with the world or program state.
Together, these properties give us an unprecedented ability to reason about our code. For example, input validation is
easier to isolate with totality, caching is possible when functions are deterministic, and interacting with the world is
easier to control, and test, when functions are inculpable. The kinds of things that break these properties are side
effects: directly accessing or changing mutable state (e.g. maintaining a var in a class or using a legacy API that is
impure), communicating with external resources (e.g. files or network lookup), or throwing exceptions.
PF = ODI + NSE
Pure Functions = Output Depends only on Input + No Side Effects)
FP is just programming with functions. Functions are:
1. Total: They return an output for every input.
2. Deterministic: They return the same output for the same input.
3. Pure: Their only effect is computing the output.
The rest is just composition you can learn over time.
john Ⓐ De Goes
3. 1. A pure function depends only on (a) its declared input parameters and (b) its algorithm to produce its result.
A pure function has no “back doors,” which means:
1. Its result can’t depend on reading any hidden value outside of the function scope, such as another field in the same class or global variables.
2. It cannot modify any hidden fields outside of the function scope, such as other mutable fields in the same class or global variables.
3. It cannot depend on any external I/O. It can’t rely on input from files, databases, web services, UIs, etc; it can’t produce output, such as
writing to a file, database, or web service, writing to a screen, etc.
2. A pure function does not modify its input parameters.
A pure function is a function that depends only on its declared input parameters and its algorithm to produce its output.
It does not read any other values from “the outside world” — the world outside
of the function’s scope — and it does not modify any values in the outside world
Functional programming is a way of writing software applications using only pure functions and immutable values.
FP means programming with pure functions, and a pure function is one that lacks side effects…
A function f with input type A and output type B (written in Scala as a single type: A => B , pronounced “A to B ” or “A arrow B ”) is a computation that relates every value a of type
A to exactly one value b of type B such that b is determined solely by the value of a. Any changing state of an internal or external process is irrelevant to computing the result f(a).
For example, a function intToString having type Int => String will take every integer to a corresponding string. Furthermore, if it really is a function, it will do nothing else.
In other words, a function has no observable effect on the execution of the program other than to compute a result given its inputs; we say that it has no side effects. We
sometimes qualify such functions as pure functions to make this more explicit, but this is somewhat redundant.
FP in Scala
by Paul Chiusano
and Runar Bjarnason
@pchiusano @runarorama
by Sam Halliday
@fommil
by Alvin Alexander
@alvinalexander
Definitions of Functional Programming
1.2 Pure Functional Programming
Functional Programming is the act of writing programs with pure functions. Pure functions have three properties:
• Total: return a value for every possible input
• Deterministic: return the same value for the same input
• Inculpable: no (direct) interaction with the world or program state.
Together, these properties give us an unprecedented ability to reason about our code. For example, input validation is
easier to isolate with totality, caching is possible when functions are deterministic, and interacting with the world is
easier to control, and test, when functions are inculpable. The kinds of things that break these properties are side
effects: directly accessing or changing mutable state (e.g. maintaining a var in a class or using a legacy API that is
impure), communicating with external resources (e.g. files or network lookup), or throwing exceptions.
FP is just programming with functions. Functions are:
1. Total: They return an output for every input.
2. Deterministic: They return the same output for the same input.
3. Pure: Their only effect is computing the output.
The rest is just composition you can learn over time.
TOTALITY
john Ⓐ De Goes
PF = ODI + NSE
Pure Functions = Output Depends only on Input + No Side Effects)
A pure function has no side effects,
meaning that it does not read
anything from the outside world or
write anything to the outside world.
As a result of 1, if a pure function is
called with an input parameter x an
infinite number of times, it will
always return the same result y.
This is unlike an OOP method, which
can depend on other fields in the
same class as the method.
4. 1. A pure function depends only on (a) its declared input parameters and (b) its algorithm to produce its result.
A pure function has no “back doors,” which means:
1. Its result can’t depend on reading any hidden value outside of the function scope, such as another field in the same class or global variables.
2. It cannot modify any hidden fields outside of the function scope, such as other mutable fields in the same class or global variables.
3. It cannot depend on any external I/O. It can’t rely on input from files, databases, web services, UIs, etc; it can’t produce output, such as
writing to a file, database, or web service, writing to a screen, etc.
2. A pure function does not modify its input parameters.
A pure function is a function that depends only on its declared input parameters and its algorithm to produce its output.
It does not read any other values from “the outside world” — the world outside
of the function’s scope — and it does not modify any values in the outside world
Functional programming is a way of writing software applications using only pure functions and immutable values.
FP means programming with pure functions, and a pure function is one that lacks side effects…
A function f with input type A and output type B (written in Scala as a single type: A => B , pronounced “A to B ” or “A arrow B ”) is a computation that relates every value a of type
A to exactly one value b of type B such that b is determined solely by the value of a. Any changing state of an internal or external process is irrelevant to computing the result f(a).
For example, a function intToString having type Int => String will take every integer to a corresponding string. Furthermore, if it really is a function, it will do nothing else.
In other words, a function has no observable effect on the execution of the program other than to compute a result given its inputs; we say that it has no side effects. We
sometimes qualify such functions as pure functions to make this more explicit, but this is somewhat redundant.
FP in Scala
by Paul Chiusano
and Runar Bjarnason
@pchiusano @runarorama
by Sam Halliday
@fommil
by Alvin Alexander
@alvinalexander
Definitions of Functional Programming
1.2 Pure Functional Programming
Functional Programming is the act of writing programs with pure functions. Pure functions have three properties:
• Total: return a value for every possible input
• Deterministic: return the same value for the same input
• Inculpable: no (direct) interaction with the world or program state.
Together, these properties give us an unprecedented ability to reason about our code. For example, input validation is
easier to isolate with totality, caching is possible when functions are deterministic, and interacting with the world is
easier to control, and test, when functions are inculpable. The kinds of things that break these properties are side
effects: directly accessing or changing mutable state (e.g. maintaining a var in a class or using a legacy API that is
impure), communicating with external resources (e.g. files or network lookup), or throwing exceptions.
FP is just programming with functions. Functions are:
1. Total: They return an output for every input.
2. Deterministic: They return the same output for the same input.
3. Pure: Their only effect is computing the output.
The rest is just composition you can learn over time.
DETERMINISM
john Ⓐ De Goes
PF = ODI + NSE
Pure Functions = Output Depends only on Input + No Side Effects)
A pure function has no side effects,
meaning that it does not read
anything from the outside world or
write anything to the outside world.
As a result of 1, if a pure function is
called with an input parameter x an
infinite number of times, it will
always return the same result y.
This is unlike an OOP method, which
can depend on other fields in the
same class as the method.
5. 1. A pure function depends only on (a) its declared input parameters and (b) its algorithm to produce its result.
A pure function has no “back doors,” which means:
1. Its result can’t depend on reading any hidden value outside of the function scope, such as another field in the same class or global variables.
2. It cannot modify any hidden fields outside of the function scope, such as other mutable fields in the same class or global variables.
3. It cannot depend on any external I/O. It can’t rely on input from files, databases, web services, UIs, etc; it can’t produce output, such as
writing to a file, database, or web service, writing to a screen, etc.
2. A pure function does not modify its input parameters.
A pure function is a function that depends only on its declared input parameters and its algorithm to produce its output.
It does not read any other values from “the outside world” — the world outside
of the function’s scope — and it does not modify any values in the outside world
Functional programming is a way of writing software applications using only pure functions and immutable values.
FP means programming with pure functions, and a pure function is one that lacks side effects…
A function f with input type A and output type B (written in Scala as a single type: A => B , pronounced “A to B ” or “A arrow B ”) is a computation that relates every value a of type
A to exactly one value b of type B such that b is determined solely by the value of a. Any changing state of an internal or external process is irrelevant to computing the result f(a).
For example, a function intToString having type Int => String will take every integer to a corresponding string. Furthermore, if it really is a function, it will do nothing else.
In other words, a function has no observable effect on the execution of the program other than to compute a result given its inputs; we say that it has no side effects. We sometimes
qualify such functions as pure functions to make this more explicit, but this is somewhat redundant.
FP in Scala
by Paul Chiusano
and Runar Bjarnason
@pchiusano @runarorama
by Sam Halliday
@fommil
by Alvin Alexander
@alvinalexander
Definitions of Functional Programming
1.2 Pure Functional Programming
Functional Programming is the act of writing programs with pure functions. Pure functions have three properties:
• Total: return a value for every possible input
• Deterministic: return the same value for the same input
• Inculpable: no (direct) interaction with the world or program state.
Together, these properties give us an unprecedented ability to reason about our code. For example, input validation is
easier to isolate with totality, caching is possible when functions are deterministic, and interacting with the world is
easier to control, and test, when functions are inculpable. The kinds of things that break these properties are side
effects: directly accessing or changing mutable state (e.g. maintaining a var in a class or using a legacy API that is
impure), communicating with external resources (e.g. files or network lookup), or throwing exceptions.
FP is just programming with functions. Functions are:
1. Total: They return an output for every input.
2. Deterministic: They return the same output for the same input.
3. Pure: Their only effect is computing the output.
The rest is just composition you can learn over time.
NO SIDE EFFECTS
john Ⓐ De Goes
PF = ODI + NSE
Pure Functions = Output Depends only on Input + No Side Effects)
A pure function has no side effects,
meaning that it does not read
anything from the outside world or
write anything to the outside world.
As a result of 1, if a pure function is
called with an input parameter x an
infinite number of times, it will
always return the same result y.
This is unlike an OOP method, which
can depend on other fields in the
same class as the method.
6. 1. A pure function depends only on (a) its declared input parameters and (b) its algorithm to produce its result.
A pure function has no “back doors,” which means:
1. Its result can’t depend on reading any hidden value outside of the function scope, such as another field in the same class or global variables.
2. It cannot modify any hidden fields outside of the function scope, such as other mutable fields in the same class or global variables.
3. It cannot depend on any external I/O. It can’t rely on input from files, databases, web services, UIs, etc; it can’t produce output, such as
writing to a file, database, or web service, writing to a screen, etc.
2. A pure function does not modify its input parameters.
A pure function is a function that depends only on its declared input parameters and its algorithm to produce its output.
It does not read any other values from “the outside world” — the world outside
of the function’s scope — and it does not modify any values in the outside world
Functional programming is a way of writing software applications using only pure functions and immutable values.
FP means programming with pure functions, and a pure function is one that lacks side effects…
A function f with input type A and output type B (written in Scala as a single type: A => B , pronounced “A to B ” or “A arrow B ”) is a computation that relates every value a of type
A to exactly one value b of type B such that b is determined solely by the value of a. Any changing state of an internal or external process is irrelevant to computing the result f(a).
For example, a function intToString having type Int => String will take every integer to a corresponding string. Furthermore, if it really is a function, it will do nothing else.
In other words, a function has no observable effect on the execution of the program other than to compute a result given its inputs; we say that it has no side effects. We
sometimes qualify such functions as pure functions to make this more explicit, but this is somewhat redundant.
FP in Scala
by Paul Chiusano
and Runar Bjarnason
@pchiusano @runarorama
by Sam Halliday
@fommil
by Alvin Alexander
@alvinalexander
Definitions of Functional Programming
1.2 Pure Functional Programming
Functional Programming is the act of writing programs with pure functions. Pure functions have three properties:
• Total: return a value for every possible input
• Deterministic: return the same value for the same input
• Inculpable: no (direct) interaction with the world or program state.
Together, these properties give us an unprecedented ability to reason about our code. For example, input validation is
easier to isolate with totality, caching is possible when functions are deterministic, and interacting with the world is
easier to control, and test, when functions are inculpable. The kinds of things that break these properties are side
effects: directly accessing or changing mutable state (e.g. maintaining a var in a class or using a legacy API that is
impure), communicating with external resources (e.g. files or network lookup), or throwing exceptions.
FP is just programming with functions. Functions are:
1. Total: They return an output for every input.
2. Deterministic: They return the same output for the same input.
3. Pure: Their only effect is computing the output.
The rest is just composition you can learn over time.
PURITY
john Ⓐ De Goes
A pure function has no side effects,
meaning that it does not read
anything from the outside world or
write anything to the outside world.
As a result of 1, if a pure function is
called with an input parameter x an
infinite number of times, it will
always return the same result y.
This is unlike an OOP method, which
can depend on other fields in the
same class as the method.
PF = ODI + NSE
Pure Functions = Output Depends only on Input + No Side Effects)
7. We can formalize this idea of pure functions using the concept of referential transparency (RT). This is a property of
expressions in general and not just functions. For the purposes of our discussion, consider an expression to be any part of a
program that can be evaluated to a result—anything that you could type into the Scala interpreter and get an answer. For
example, 2 + 3 is an expression that applies the pure function + to the values 2 and 3 (which are also expressions). This has no
side effect. The evaluation of this expression results in the same value 5 every time. In fact, if we saw 2 + 3 in a program we
could simply replace it with the value 5 and it wouldn’t change a thing about the meaning of our program.
This is all it means for an expression to be referentially transparent—in any program, the expression can be replaced by its
result without changing the meaning of the program. And we say that a function is pure if calling it with RT arguments is
also RT.
Referential transparency and purity
An expression E is referentially transparent if, for all programs P, all occurrences of E in P can be replaced by the result of
evaluating E without affecting the meaning of P.
A function f is pure if the expression f(x) is referentially transparent for all referentially transparent x.3
3 There are some subtleties to this definition, and we’ll refine it later in this book. See the chapter notes at our
GitHub site (https://github.com/pchiusano/fpinscala; see the preface) for more discussion.
Referential Transparency and Purity
Functional Programming in Scala
(by Paul Chiusano and Runar Bjarnason)
@pchiusano @runarorama