Functional Programming

Functional Programming

Functional Programming

Oct 17, 2018

Development Workflows in Haskell

Development Workflows in Haskell

Development Workflows in Haskell

Our monthly webinar series is really starting to take off and

judging by the registration numbers we might be forced into

allowing more than 500 people to register for our next webinar

which could be about Rust - Don't hold us to that ;)  For

Roman's, Development Workflows in Haskell, we had 434 registrants

which makes this our most popular webinar so far.

About the Webinar

In this month's webinar, Roman

Gonzalez will help you take your workflow skills to the next level

by exploring different approaches to Haskell development. From

compiling a full application whenever you save a file, to

experiment with in-progress code drafts over a REPL, we will

explore the benefits of REPL driven development and how to

integrate this to your everyday routine easily.


Coming from classic typed

programming languages like Java, you get to learn about the

benefits of types on large code bases, and with dynamic type

languages like Python, you get to experience the benefits of a

quick feedback loop using a REPL, interacting with the code as you

develop it. In this webinar, Roman will demonstrate how you can get

to use these two essential aspects of development using Haskell

tooling.


Topics to be covered:

  • Differences between interpreted and compiled workflows

  • Haskell development using Stack

  • Haskell development using GHCi

  • How to customize and extend GHCi

  • Running your application test-suite over the REPL

  • Running applications over the REPL

  • Demo the usage of a couple of text editors and what workflows they provide

Watch the Webinar


The slides to this webinar are also available at Development Workflows in Haskell. We

decided to include the chat log for this webinar and it can be seen

at the end of this blog post.

We want your feedback for webinar topics

We would like to hear your suggestions for future webinar

topics. The simplest way to accomplish this is to add a

comment to this blog post with your suggestion. Alternatively, send

your suggestion via email to socialmedia@fpcomplete.com.

Check out our new Explainer Video

At FP Complete, we do so many things to help companies

it's hard to encapsulate our impact in a few words.  They say

a picture is worth a thousand words, so a video has to be worth

10,000 words (at least). Therefore, to tell all we can in as little

time as possible, we recently produced a new explainer video. Check

it out by clicking the video link below. It's only 108 seconds to

get the full story of FP Complete. One last thing. We have a home

page a facelift, and you can check it out here.


In case you haven't read it yet

Our State of Haskell Report 2018 has proven to be an excellent read for those that are interested where the language is heading, and its rate of adoption for commercial applications.  You can download the report by clicking the image below. Also, Aaron was recently interviewed by InfoQ about the report, and you can find that article here - Haskell Adoption and User Satisfaction Growing.

Finally - Fix your DevOps Challenges

If you haven't heard, we just published an ebook about DevOps

and the 5 strategies you can implement now to help your IT

Projects. Click the picture below to get your free copy today.

Webinar Chat Log

10:00:58 From Michael Snoyman : Hi everyone, welcome to the

webinar, we'll be getting started in a few minutes once everyone's

had a chance to join.

10:01:32 From Nick Linker to All panelists : Hello everyone!

10:03:18 From Coury Ditch : Hey Michael & Roman! Thanks for doing

this webinar, and thanks FP Complete for the great learning

resources.

10:03:30 From Jingjing Duan : yea thanks!

10:03:34 From Samuel Castro to All panelists : :)

10:03:47 From Michael Snoyman : Feel free to drop questions here

and in the Q&A, I'll pass them along to Roman at appropriate

break points

10:08:41 From Barry Moore to All panelists : Can slides be shared

at end?

10:09:13 From Michael Snoyman : I believe so Barry, I'll confirm

with Roman after the webinar

10:10:36 From Nick Linker : The bash prompt is awesome :-P

10:14:41 From Nick Linker : Guys, is there anyone who is recording

the video?

10:14:50 From Edmund Cape : Is there a way to show modules without

the file name?

10:14:54 From John Soo to All panelists : Spacemacs <3

10:15:08 From Edmund Cape : I use it a lot, but find the filename

obfuscates the list

10:16:23 From Edmund Cape : thank you.

10:17:28 From Nick Linker : How to unload a module then?

10:18:25 From Daniel Leones to All panelists : Usually, in next

days, they release a video recoding of this webinar.

10:19:03 From Michael Snoyman : Daniel: that's correct, we intend

to release a video in the near future.

10:19:10 From Michael Snoyman : Nick: Question noted

10:22:51 From Nick Linker : How to execute only one (or several)

test, not the whole suite?

10:24:17 From Nick Linker : Thanks, this answers the question.

10:24:25 From Jyothish Joshi : Is “stack repl” same as “stack

ghci”?

10:25:41 From Casey Allred to All panelists : is there a way for

the repl to recognize changes in the package.yaml and possibly pull

and compile the new dependencies without exiting and building?

10:25:43 From Edmund Cape : does `:m -<module name>` not

unload a specific module?

10:26:44 From Edmund Cape : before leaving this section: can we

list the steps to link the test dependencies?

10:27:03 From Michael Snoyman : What do you mean by link?

10:27:26 From Edmund Cape : we get import errors

10:27:56 From Benito Haskelitto : :m - <module name> works

for :l name

10:27:58 From Michael Snoyman : I don't think we'll be able to get

into that kind of debugging in this webinar

10:28:18 From Nick Linker : What is BCO?

10:28:44 From Michael Snoyman : Byte Code Object if I'm not

mistaken

10:29:00 From Nick Linker : Thanks, Michael.

10:29:07 From Michael Snoyman : :)

10:30:52 From Niklas Hambuechen : Another benefit of object code is

that you can turn on -O flags. A drawback is that object code loads

much slower than byte code (unless already cached on disk).

10:36:00 From Nick Linker : this is cool trick

10:36:00 From Michael Xavier : what is :seti again? as opposed to

:set

10:36:09 From Michael Xavier : haha nm

10:36:23 From Michael Snoyman : Roman is psychic

10:36:40 From Michael Xavier : haha clearly

10:36:41 From Daniel Leones to All panelists : haha

10:37:32 From sdf asdf : half a megabyte to add up numbers?

10:37:39 From Nick Linker : half of megabyte to calculate 5 :-D

10:40:17 From Pankaj Godbole : Can you please mention where .ghci

resides? Thanks.

10:40:59 From Daniel Leones to All panelists : In slides, I

guess.

10:41:05 From Nick Linker : Roman, how do I make multiline

definitions in repl?

10:41:13 From Han Joosten to All panelists : this is a neat .ghci

file. Can it be shared?

10:41:54 From Jingjing Duan : can you share your ~/ghci file?

10:41:57 From Nick Linker : (... they usually require correct

indentation)

10:42:04 From Pankaj Godbole : OK, got it! :-)

10:42:13 From Jyothish Joshi : Is `stack ghci` exactly same as the

underlying `ghci` or are there any additional functionalities (do

all the commands mentioned over here like :seti etc work on plain

`ghci` as well) ?

10:42:38 From Michael Snoyman : You can use `stack ghci --verbose`

to see the extra flags passed to `ghci`. It also sets some

environment variables such as GHC_PACKAGE_PATH

10:42:51 From Casey Allred to All panelists : :{ and :} for multi

line GHCI

10:42:56 From Michael Snoyman : Thanks Casey :)

10:43:06 From Michael Xavier : IIRC git can't preserve the

permissions on a .ghci file and checks it out with too-open

permissions for ghci

10:52:35 From Samuel Castro to All panelists : Are you guys going

to share this video?

10:52:39 From Coury Ditch : *clap*

10:52:48 From Nick Linker : Ah DEBUGGING is not touched, ugh...

10:52:49 From Jingjing Duan : great webinar!

10:52:50 From Pankaj Godbole : Thanks Roman

10:52:54 From John Askew : thanks!

10:52:55 From Nick Linker : But thanks anywhay

10:52:57 From Jörn Gersdorf : Thank you, Roman!

10:52:57 From Anton Latukha to All panelists : Great lecture.

10:52:59 From Karl Berger : Thanks Roman!

10:52:59 From Samuel Castro to All panelists : Good job!

10:53:00 From Rich Beerman : Thank you!

10:53:01 From Michael Xavier : Thanks!

10:53:02 From Jan Stranik to All panelists : thanks.

10:53:03 From Alexei Pastuchov to All panelists : thank you

10:53:04 From Anton Latukha to All panelists : Thank you!

10:53:04 From Jameo Jones to All panelists : Thanks; I learned a

lot.

10:53:07 From Casey Allred to All panelists : thanks!

10:53:07 From Samuel Castro to All panelists : thanks!

10:53:08 From Nikolay Artamonov to All panelists : Thanks! )

10:53:08 From Alex Bielen : thanks roman!

10:53:09 From Edmund Cape : thank you!!

10:53:11 From Han Joosten to All panelists : Great, very inspiring.

This is going to save a lot of time!

10:53:13 From Jyothish Joshi : Thanks!!!

10:53:15 From Han Joosten to All panelists : Thanks!!

10:53:19 From Bulent Basaran : Thank you :-)

10:53:20 From NILESH MESHRAM : no

10:53:20 From John Soo to All panelists : thanks!!

10:53:20 From Pablo Adames to All panelists : thanks

10:53:21 From Franck Rasolo : Thanks Roman & Michael!

10:53:21 From David Nicholaeff to All panelists : Danke

10:53:24 From NILESH MESHRAM : thanks

10:53:30 From Vassil Keremidchiev : Thank you!

10:53:32 From Yifan Yu : thanks!

10:53:33 From Dan Banta : Thank you.

10:53:34 From Aleksandr Lisenko : Thank you!

10:53:38 From John Askew to All panelists : Seems like ghcid

completely replaces the `stack build —fast —file-watch approach`,

is there any reason to use the former?