WEBVTT
00:01.000 --> 00:01.840
Okay, excellent.
00:01.840 --> 00:04.000
I think we are live on stream.
00:05.320 --> 00:06.360
Yuchen is here with us.
00:06.360 --> 00:08.560
Thanks for the great talk, Yuchen.
00:08.560 --> 00:11.840
For the questions, people are welcome to post them on IRC
00:11.840 --> 00:12.680
or on the pad.
00:13.560 --> 00:17.000
And we will also open this big blue button room up
00:17.000 --> 00:19.560
in a few minutes if people want to join here
00:19.560 --> 00:22.680
and ask Yuchen the questions directly.
00:22.680 --> 00:30.680
So yeah, thanks again and take it away.
00:30.680 --> 00:53.680
Yeah, thanks.
01:00.680 --> 01:29.680
Okay.
01:29.680 --> 01:33.000
Well, I guess while we wait for some other audience questions
01:33.000 --> 01:36.200
to start trickling in, I wonder,
01:37.280 --> 01:39.800
not having yet watched your talk, obviously,
01:39.800 --> 01:42.120
because it's been behind the scenes,
01:42.120 --> 01:44.320
I wonder if your system works
01:44.320 --> 01:46.040
with offline documentation as well,
01:46.040 --> 01:49.200
because I remember seeing earlier
01:49.200 --> 01:52.520
some other Haskell-related workflows
01:52.520 --> 01:56.000
where people would have downloaded the entirety
01:56.000 --> 02:00.280
of the Hackage documentations
02:00.280 --> 02:03.280
and yeah, be able to browse them locally when offline.
02:06.120 --> 02:06.960
Yeah, for sure.
02:06.960 --> 02:17.960
I mean, that's one of the points of writing these packages.
02:17.960 --> 02:26.520
So the Hadock org documentation is meant for generation
02:26.520 --> 02:30.120
of org files of these Haskell packages
02:30.120 --> 02:33.160
so that you can have them locally on your computer
02:33.160 --> 02:35.240
rather than having to rely on Hackage,
02:36.400 --> 02:40.440
which is online, which is on the web.
02:40.440 --> 02:48.720
The other one, HCL, the code explorer, it's self-hosted.
02:48.720 --> 02:54.920
So all you need to do is to download the packages
02:54.920 --> 02:58.840
you want to index and then index them on the server
02:58.840 --> 03:02.120
or on the local host and then, yeah,
03:02.120 --> 03:05.520
then you can unplug your Ethernet cable
03:05.520 --> 03:10.880
and explore Haskell code on your computer.
03:10.880 --> 03:35.880
Nice, thanks, that makes sense.
03:41.880 --> 03:45.640
Maybe another question while we wait for other questions
03:45.640 --> 03:48.800
from the audience and again, not having had a chance
03:48.800 --> 03:50.720
to watch your talk yet.
03:50.720 --> 03:53.280
What do you think is the state of, I guess,
03:53.280 --> 03:56.760
integration of Haskell, both, I guess,
03:56.760 --> 04:01.080
the language, the packages, the tooling, all that stuff,
04:01.080 --> 04:05.160
integration with Emacs today in like 2022?
04:05.160 --> 04:07.480
Because I'm also, I do have a Haskell background,
04:07.480 --> 04:10.120
but I haven't done much of it in a few years.
04:10.120 --> 04:13.200
And back when I do remember some pain points,
04:13.200 --> 04:16.360
including when trying to integrate it into Emacs.
04:16.360 --> 04:19.520
So I do wonder what the general state of things
04:19.520 --> 04:25.040
are, if you could maybe answer quickly, I guess.
04:25.040 --> 04:26.520
Not in great detail necessarily.
04:29.640 --> 04:33.480
OK, yeah, I mean, I haven't tried all the packages,
04:33.480 --> 04:34.880
Haskell-related packages.
04:34.880 --> 04:40.680
And I think the most prominent ones are Haskell mode
04:40.680 --> 04:45.080
and Haskell language servers through language server
04:45.080 --> 04:49.880
packages like eglots or LSP mode.
04:49.880 --> 04:56.280
Yeah, I mean, Haskell mode is like,
04:56.280 --> 05:03.160
it feels to me like a standard language mode where
05:03.160 --> 05:09.280
it offers font locking, syntax highlighting, I mean,
05:09.280 --> 05:18.520
and REPL, like Python mode, and limited documentation
05:18.520 --> 05:25.400
and cross-references, which is, I mean, as I mentioned,
05:25.400 --> 05:30.360
that's why I did this HCL package.
05:30.360 --> 05:38.280
And the language server is like, it is also pretty standard
05:38.280 --> 05:42.440
and offering all the language server things, most of them,
05:42.440 --> 05:43.200
I think.
05:43.200 --> 05:46.320
But it's very slow.
05:46.320 --> 05:49.520
It's slower than any other language server I've used.
05:49.520 --> 05:55.440
And yeah, and it doesn't really work
05:55.440 --> 06:03.360
with cross-reference, which I also mentioned in the talk.
06:03.360 --> 06:11.120
So yeah, that's the two main packages
06:11.120 --> 06:12.720
I think people use most.
06:12.720 --> 06:23.520
And yeah, I can't think of anything else that's very
06:23.520 --> 06:24.600
prominent.
06:28.280 --> 06:29.120
Great, thanks.
06:33.040 --> 06:34.400
Oh, OK, I just remembered.
06:34.400 --> 06:39.200
There's also the Haskell TNG package.
06:39.200 --> 06:41.120
But I haven't looked into it yet.
06:41.120 --> 06:47.960
It's, if I remember correctly, it's like in the GNU ELP,
06:47.960 --> 06:50.080
is it in GNU ELP or non-GNU?
06:50.080 --> 06:50.840
Let me have a look.
06:58.280 --> 07:00.200
Right, it's also in non-GNU.
07:00.200 --> 07:02.680
Never mind.
07:02.680 --> 07:07.200
Yeah, I think it's a new, up-and-coming Haskell media
07:07.200 --> 07:10.480
mode, an experimental rewrite of Haskell mode.
07:10.480 --> 07:12.040
That's the description.
07:19.080 --> 07:21.800
Cool, and have you had a chance to maybe play around
07:21.800 --> 07:24.640
with that a little bit and see how
07:24.640 --> 07:27.440
it compares with the traditional, the older,
07:27.440 --> 07:28.520
the existing Haskell mode?
07:32.960 --> 07:34.120
No, I haven't yet.
07:34.120 --> 07:35.680
OK.
08:05.000 --> 08:07.160
Yeah, I can't think of anything else that's very prominent.
08:07.160 --> 08:09.160
I haven't looked into it yet.
08:09.160 --> 08:12.120
It's, if I remember correctly, it's like in the GNU ELP.
08:12.120 --> 08:15.440
Yeah, I think it's a new, up-and-coming Haskell
08:15.440 --> 08:19.400
media mode, an experimental rewrite of Haskell mode.
08:19.400 --> 08:20.280
That's the description.
08:20.280 --> 08:22.520
I haven't yet, I haven't looked into it,
08:22.520 --> 08:25.480
and I think it's a new, up-and-coming Haskell
08:25.480 --> 08:28.920
media mode, an experimental rewrite of Haskell mode.
08:28.920 --> 08:31.680
Yeah, I haven't yet, I haven't looked into it,
08:31.680 --> 08:33.740
you
09:01.680 --> 09:17.280
One question that just occurred to me, I guess, about the state of like literate Haskell and
09:17.280 --> 09:22.960
potential integration with org mode. I've actually never, I haven't put too much thought into this,
09:22.960 --> 09:28.000
but it just occurred to me that Haskell, as you likely know, already has a literate Haskell mode
09:28.000 --> 09:36.000
with like.LHS files. And I was wondering, I guess, if you've tried maintaining or writing
09:36.000 --> 09:41.200
any projects in literate Haskell, at least not, if not entirely, then with a considerable amount
09:41.200 --> 09:50.400
of source code in that approach and how it might compare, for example, to something like Babel,
09:50.400 --> 09:58.160
I guess, which is very much more documentation oriented with like code blocks intermingled.
10:01.280 --> 10:10.880
Okay. Yeah, I'm afraid I haven't really used the literate Haskell. I heard of it. And if I want
10:11.600 --> 10:17.680
to like write literate programming, I would, I mean, I would go for org mode and org Babel,
10:17.680 --> 10:24.720
indeed, first before, yeah, before the more language specific mode.
10:28.240 --> 10:34.080
Right. That makes sense. I just thought it's interesting because Haskell is, I guess,
10:34.080 --> 10:39.200
one of the fewer languages where it actually does have its own literate mode, if you will,
10:39.200 --> 10:43.600
and yeah, there might be something interesting there to think about or try exploring at some
10:43.600 --> 10:55.040
point. Yeah, yeah, definitely. Yeah. Yeah, I will look into it.
10:55.040 --> 11:10.960
Poo.
11:25.040 --> 11:53.740
Yeah, so I'm reading about this Haskell TNG mode.
11:53.740 --> 11:57.400
It looks like it can also jump to definition
11:57.400 --> 12:03.440
outside of the project using a thing uses
12:03.440 --> 12:09.560
a tool called HS Inspect, which is also
12:09.560 --> 12:15.000
a tool using the GHC API.
12:15.000 --> 12:17.480
Yeah, not sure how it is achieved, though.
12:17.480 --> 12:21.520
Bren.
12:48.480 --> 12:51.360
I think I have a question on IRC.
12:51.360 --> 12:53.320
Is the indexing faster?
12:53.320 --> 12:55.400
And when re-indexing, would it be too slow
12:55.400 --> 12:56.480
to re-index on demand?
13:01.560 --> 13:05.120
Sorry, what's the question again?
13:05.120 --> 13:09.240
The question is, is the indexing faster when re-indexing?
13:09.240 --> 13:11.560
Would it be too slow to re-index on demand?
13:11.560 --> 13:14.960
I think this might be for the other talk stream.
13:14.960 --> 13:15.920
I'm not entirely sure.
13:15.920 --> 13:21.640
So yeah, I mean, it sounds relevant to this talk, though.
13:21.640 --> 13:23.600
Oh, OK, then, yeah, OK, sorry.
13:23.600 --> 13:26.600
I'm a little scatterbrained.
13:26.600 --> 13:28.320
No, it's OK.
13:28.320 --> 13:36.760
Oh, yeah, yeah, re-indexing, I mean, I don't know, actually,
13:36.760 --> 13:41.680
because I haven't started implementing
13:41.680 --> 13:44.400
on-demand re-indexing yet.
13:44.400 --> 13:49.320
And I'm still a bit hazy about whether it strictly
13:49.320 --> 13:53.520
requires recompiling when re-indexing.
13:53.520 --> 14:03.440
And I mean, but I do think it's like the main workhorse
14:03.440 --> 14:09.400
of this process would be the GHC API compiling process,
14:09.400 --> 14:15.760
whether it can avoid recompilation efficiency.
14:15.760 --> 14:23.680
When, yeah, and I think it can.
14:23.680 --> 14:28.720
It has some optimization with recompilation.
14:28.720 --> 14:35.480
And also, ideally, you should start
14:35.480 --> 14:39.800
using a bit less heavy compilation,
14:39.800 --> 14:45.640
like this HIE,.hie files, instead of compiling
14:45.640 --> 14:49.280
the whole thing, instead of requiring
14:49.280 --> 14:55.120
the compilation of the whole project from using
14:55.120 --> 14:56.000
the whole pipeline.
14:56.000 --> 15:01.760
So HIE, I think, is more or less the only front-end part.
15:01.760 --> 15:05.800
Yeah, and if, I mean, that's one of the things,
15:05.800 --> 15:10.520
like, main to-dos for this project, for the HCL project,
15:10.520 --> 15:16.920
to replace the cabal helper with using.hie
15:16.920 --> 15:18.920
that I haven't looked into yet.
15:22.920 --> 15:23.440
Awesome.
15:26.480 --> 15:29.000
Yeah, sounds interesting and looking forward to it.
15:29.000 --> 15:32.240
I think we have about, like, less than a minute or so
15:32.240 --> 15:34.640
for the live Q&A. Of course, people
15:34.640 --> 15:37.520
are welcome to keep asking questions,
15:37.520 --> 15:40.240
whether on the pad or on IRC.
15:40.240 --> 15:43.520
And yeah, so after this, Q&A concludes.
15:43.520 --> 15:44.920
This is our last talk of today.
15:44.920 --> 15:49.080
So we would appreciate it if people would join us
15:49.080 --> 15:54.120
on the general stream for the closing remarks of today.
15:54.120 --> 15:55.720
And yeah, we'll still have tomorrow
15:55.720 --> 15:57.440
to look forward to the next one.
15:57.440 --> 15:59.640
We'll still have tomorrow to look forward to, of course.
15:59.640 --> 16:01.160
OK.
16:25.960 --> 16:28.040
I see that EmacsConf just left.
16:28.040 --> 16:30.400
Does that mean the Q&A is over?
16:30.400 --> 16:31.680
Yep, I believe so.
16:31.680 --> 16:35.760
So I think we should head on over to the GenStream.
16:35.760 --> 16:36.800
OK, cool.
16:36.800 --> 16:39.280
Yeah, I'll go there as well.
16:39.280 --> 16:41.400
All right, thanks a lot for your questions.
16:41.400 --> 16:43.480
Yep, and thank you, Yuchun, for your great talk.
16:43.480 --> 16:45.000
Thank you.
16:45.000 --> 16:46.440
Thanks, bye-bye.
16:46.440 --> 16:47.200
Bye.
16:47.200 --> 17:03.240
You are currently the only person in this conference.