From dennis.raddle at gmail.com Mon Oct 2 01:15:58 2023 From: dennis.raddle at gmail.com (Dennis Raddle) Date: Sun, 1 Oct 2023 18:15:58 -0700 Subject: [Haskell-cafe] two HLS processes with same name In-Reply-To: <67E4C3EF-9E22-4584-8519-7D661E51B241@mac.com> References: <67E4C3EF-9E22-4584-8519-7D661E51B241@mac.com> Message-ID: When I don't open that extra file, the one time I tested it, there was now only one hls process, so I guess that was it! Easy to fix then. D On Sat, Sep 30, 2023 at 3:09 PM Jeff Clites wrote: > Stack treats files outside a project as being in a default project (or at > least, `stack ghci` sessions outside a project are treated that way), so > that might be it. > > Jeff > > On Sep 30, 2023, at 6:01 PM, Dennis Raddle > wrote: > >  > Thanks, Tom. I only have one stack project open, but I do have a single hs > file open from outside that project, usually. That single hs file does not > reside in a stack project tree. I'll try running VS Code with and without > that single hs file. > > D > > > > On Sat, Sep 30, 2023 at 1:56 AM Tom Ellis < > tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk> wrote: > >> On Sat, Sep 30, 2023 at 01:51:01AM -0700, Dennis Raddle wrote: >> > When I first run VS Code on a Haskell workspace, there is one >> > process called "haskell-language-server-9.2.8". Eventually another >> > process, taking an additional 1 GB, joins it. The two processes have >> > the same name. >> > >> > Is it supposed to work like this? >> >> I use Emacs, not VS Code, but when I have two >> "haskell-language-server" processes it's because I have opened a >> second project. Is it possible that's happened for you? >> >> For a hacky way to explore what's going on you could kill one of the >> processes and see what complains. >> >> Tom >> _______________________________________________ >> Haskell-Cafe mailing list >> To (un)subscribe, modify options or view archives go to: >> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >> Only members subscribed via the mailman list are allowed to post. > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From exarkun at twistedmatrix.com Mon Oct 2 13:47:13 2023 From: exarkun at twistedmatrix.com (Jean-Paul Calderone) Date: Mon, 2 Oct 2023 09:47:13 -0400 Subject: [Haskell-cafe] Taking over maintainership of `fec` In-Reply-To: References: Message-ID: On Wed, Sep 27, 2023 at 8:56 AM Jean-Paul Calderone < exarkun at twistedmatrix.com> wrote: > On Tue, Sep 26, 2023 at 1:59 PM Viktor Dukhovni > wrote: > >> On Tue, Sep 26, 2023 at 01:05:05PM -0400, Jean-Paul Calderone wrote: >> >> > > On Tue, Sep 26, 2023 at 09:37:46AM -0400, Jean-Paul Calderone wrote: >> > > >> > > > I have emailed the current maintainer and original author of the >> Haskell >> > > > bindings, Adam Langley (cced), about becoming a maintainer but I >> haven't >> > > > yet heard back. >> > > >> > > I didn't know AGL was (in the past?) a Haskeller. If he hasn't >> > > responded in the meantime, I'll reach out via office email, to ask >> > > whether he's inclined to continue to maintain the "fec" package. >> > > >> > >> > Thanks Viktor, that would be wonderful. >> >> Adam's response: >> >> Thanks. After 15 years they're welcome to take it over >> >> > Great news, thanks Viktor. According to > https://wiki.haskell.org/Taking_over_a_package there are certain steps > Adam should take to make this official, but I'll see if the Hackage admins > are satisfied with this thread or not. > Viktor, I would be grateful if I could impose on you to give this one more little push. Do you think you could ask Alex to email hackage-admin at haskell.org saying "I would like jcalderone to take over the fec package"? He could probably even just forward this email. Much appreciated, Jean-Paul > >> -- >> Viktor. >> _______________________________________________ >> Haskell-Cafe mailing list >> To (un)subscribe, modify options or view archives go to: >> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >> Only members subscribed via the mailman list are allowed to post. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From branimir.maksimovic at gmail.com Tue Oct 3 04:46:02 2023 From: branimir.maksimovic at gmail.com (Branimir Maksimovic) Date: Tue, 3 Oct 2023 06:46:02 +0200 Subject: [Haskell-cafe] two HLS processes with same name In-Reply-To: References: Message-ID: <1243E146-1868-4DBC-9526-9BFB75C761C4@gmail.com> macOS needs just 1-2GiB of wired RAM, don’t worry… > On 30. 9. 2023., at 10:51, Dennis Raddle wrote: > > I'm running the HLS plugin in VS Code on MacOS, on an M2 Apple Silicon MacBook Pro. My computer is running low on RAM and the HLS process seems to be fairly large for me (over 1 GB). When I first run VS Code on a Haskell workspace, there is one process called "haskell-language-server-9.2.8". Eventually another process, taking an additional 1 GB, joins it. The two processes have the same name. > > Is it supposed to work like this? > > Note about Apple Silicon FYI: I bought this computer in June with 16 GB Integrated RAM. RAM is very expensive in a SoC. I'm discovering that a lot of programs are memory hogs, not sure if it's the latest MacOS or M2, but between running software development stuff and music-related apps, I'm running out of RAM. I just bought a similar MacBook but with 32 GB RAM, and will sell the current one. So eventually I won't worry about an extra GB process or two. > Dennis > > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. From capn.freako at gmail.com Tue Oct 3 11:02:39 2023 From: capn.freako at gmail.com (David Banas) Date: Tue, 3 Oct 2023 07:02:39 -0400 Subject: [Haskell-cafe] Meaning of fizzled sparks? Message-ID: Hi all, If this code: f5Rslts = map (f5 (n-1) startingMinScore startingMaxScore (otherColor clr) 0) newBoards `using` parList rdeepseq totalMoves = sum $ map snd f5Rslts -- Attempt at parallelization yielded no perf. improvement. is yielding a fizzled spark ratio of about 0.3, does it imply that the sum begins pulling from the list, before the sparks have had a chance to compute the first third of the list elements? Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From capn.freako at gmail.com Tue Oct 3 11:07:51 2023 From: capn.freako at gmail.com (David Banas) Date: Tue, 3 Oct 2023 07:07:51 -0400 Subject: [Haskell-cafe] Meaning of "GC waiting" in ThreadScope? Message-ID: Hi all, When viewing the result of my code execution in ThreadScope, What does it imply when there’s a great amount of time spent in the “GC waiting” phase, but only short little blips of time spent in the “GC” phase? Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From meng.wang at bristol.ac.uk Tue Oct 3 21:42:01 2023 From: meng.wang at bristol.ac.uk (Meng Wang) Date: Tue, 3 Oct 2023 21:42:01 +0000 Subject: [Haskell-cafe] CFP, PEPM 2024 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation In-Reply-To: References: Message-ID: Dear Haskellers, A gentle reminder that the submission deadline is in two weeks. Best regards, Gabriele Keller (Utrecht University, Netherlands) Meng Wang (University of Bristol, UK) From: Meng Wang Date: Thursday, 7 September 2023 at 08:52 To: haskell-cafe at haskell.org , haskell at haskell.org Cc: g.k.keller at uu.nl Subject: CFP, PEPM 2024 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation Dear Haskellers, Gabriele and I are organising PEPM this year. Over the years, PEPM has grown into a conference of general PL topics and Haskell/FP is strongly represented. We look forward to receiving your submissions. Best regards, Gabriele Keller (Utrecht University, Netherlands) Meng Wang (University of Bristol, UK) ---------------------------------------------------------------------------------------------------------- ** ** CALL FOR PAPERS ** ** PEPM at POPL 2024 ** Workshop on PARTIAL EVALUATION AND PROGRAM MANIPULATION ** 16th of January 2024, London, United Kingdom ** ** Submission Deadline: ** 18 October 2023 ** ** https://popl24.sigplan.org/home/pepm-2024 ** https://easychair.org/conferences/?conf=pepm24 ** ----------------------------------------------------------------------------------------------------------- ACM SIGPLAN Workshop on PARTIAL EVALUATION AND PROGRAM MANIPULATION (PEPM) 2024 =============================================================================== * Website : https://popl24.sigplan.org/home/pepm-2024 * Time : 16th January 2024 * Place : London, United Kingdom (co-located with POPL 2024) The ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM) has a history going back to 1991 and has been co-located with POPL every year since 2006. It originated with the discoveries of useful automated techniques for evaluating programs with only partial input. Over the years, the scope of PEPM has expanded to include a variety of research areas centred around the theme of semantics-based program manipulation — the systematic exploitation of treating programs not only as subjects to black-box execution but also as data structures that can be generated, analysed, and transformed while establishing or maintaining important semantic properties. Scope ----- In addition to the traditional PEPM topics (see below), PEPM 2024 welcomes submissions in new domains, in particular: * Semantics based and machine-learning based program synthesis and program optimisation. * Modelling, analysis, and transformation techniques for distributed and concurrent protocols and programs, such as session types, linear types, and contract specifications. More generally, topics of interest for PEPM 2024 include, but are not limited to: * Program and model manipulation techniques such as: supercompilation, partial evaluation, fusion, on-the-fly program adaptation, active libraries, program inversion, slicing, symbolic execution, refactoring, decompilation, and obfuscation. * Techniques that treat programs/models as data objects including metaprogramming, generative programming, embedded domain-specific languages, program synthesis by sketching and inductive programming, staged computation, and model-driven program generation and transformation. * Program analysis techniques that are used to drive program/model manipulation such as: abstract interpretation, termination checking, binding-time analysis, constraint solving, type systems, automated testing and test case generation. * Application of the above techniques including case studies of program manipulation in real-world (industrial, open-source) projects and software development processes, descriptions of robust tools capable of effectively handling realistic applications, benchmarking. Examples of application domains include legacy program understanding and transformation, DSL implementations, visual languages and end-user programming, scientific computing, middleware frameworks and infrastructure needed for distributed and web-based applications, embedded and resource-limited computation, and security. This list of categories is not exhaustive, and we encourage submissions describing new theories and applications related to semantics-based program manipulation in general. If you have a question as to whether a potential submission is within the scope of the workshop, please contact the programme co-chairs, Gabriele Keller (g.k.keller at uu.nl) and Meng Wang (meng.wang at bristol.ac.uk). Submission categories and guidelines ------------------------------------ Three kinds of submissions will be accepted: * Regular Research Papers should describe new results, and will be judged on originality, correctness, significance, and clarity. Regular research papers must not exceed 12 pages. * Short Papers may include tool demonstrations and presentations of exciting if not fully polished research, and of interesting academic, industrial, and open-source applications that are new or unfamiliar. Short papers must not exceed 6 pages. * Talk Proposals may propose lectures about topics of interest for PEPM, existing work representing relevant contributions, or promising contributions that are not mature enough to be proposed as papers of the other categories. Talk Proposals must not exceed 2 pages. References and appendices are not included in page limits. Appendices may not necessarily be read by reviewers. Both kinds of submissions should be typeset using the two-column ‘sigplan’ sub-format of the new ‘acmart’ format available at: http://sigplan.org/Resources/Author/ and submitted electronically via EasyChair: https://easychair.org/conferences/?conf=pepm24 Reviewing will be single-blind. Submissions are welcome from PC members (except the two co-chairs). Accepted regular research papers will appear in formal proceedings published by ACM, and be included in the ACM Digital Library. Accepted short papers do not constitute formal publications and will not appear in the proceedings. At least one author of each accepted contribution must attend the workshop (physically or virtually) and present the work. In the case of tool demonstration papers, a live demonstration of the described tool is expected. Important dates --------------- * Paper submission deadline : **Wednesday 18th October 2023 (AoE)** * Author notification : **Wednesday 15th November 2023 (AoE)** * Workshop : **Tuesday 16th January 2024** Best paper award ---------------- PEPM 2024 continues the tradition of a Best Paper award. The winner will be announced at the workshop. Programme committee ------------------- * Chairs: Gabriele Keller (Utrecht University, Netherlands) Meng Wang (University of Bristol, UK) -------------- next part -------------- An HTML attachment was scrubbed... URL: From benl at ouroborus.net Wed Oct 4 11:50:35 2023 From: benl at ouroborus.net (Ben Lippmeier) Date: Wed, 4 Oct 2023 22:50:35 +1100 Subject: [Haskell-cafe] Meaning of fizzled sparks? In-Reply-To: References: Message-ID: <5B946939-570A-44C7-A894-0BFFBBEEAF95@ouroborus.net> > On 3 Oct 2023, at 10:02 pm, David Banas wrote: > > Hi all, > > If this code: > > f5Rslts = map (f5 (n-1) startingMinScore startingMaxScore (otherColor clr) 0) newBoards `using` parList rdeepseq > totalMoves = sum $ map snd f5Rslts -- Attempt at parallelization yielded no perf. improvement. > > is yielding a fizzled spark ratio of about 0.3, > does it imply that the sum begins pulling from the list, before the sparks have had a chance to compute the first third of the list elements? A fizzed spark is when the user code indicated that some thunk could be run in parallel, but it didn’t end up being run in parallel because by the time it was inspected it was already evaluated. Fizzed sparks are described in “Runtime Support for Multicore Haskell”, Marlow, Peyton Jones, Singh, ICFP 2009. It’s hard to tell what is happening without the code for ‘f5’, though probably 30% of results produced by ‘f5’ are already values (not thunks) so they cannot be evaluated in parallel by the ‘parList’ strategy. Ben. -------------- next part -------------- An HTML attachment was scrubbed... URL: From abela at chalmers.se Fri Oct 6 13:53:39 2023 From: abela at chalmers.se (Andreas Abel) Date: Fri, 6 Oct 2023 15:53:39 +0200 Subject: [Haskell-cafe] [ANNOUNCE] Agda 2.6.4 In-Reply-To: References: Message-ID: Dear all, The Agda Team is very pleased to announce the release of Agda 2.6.4. Thanks to everyone who gave us feedback on the release candidates! # Highlights of Agda 2.6.4 * Cubical Agda now displays boundary conditions in interactive mode (PR [#6529](https://github.com/agda/agda/pull/6529)). * An inconsistency in the treatment of large indices has been fixed (Issue [#6654](https://github.com/agda/agda/issues/6654)). * Unfolding of definitions can now be fine-controlled via `opaque` definitions. * Additions to the sort system: `LevelUniv` and `Propω`. * New flag `--erasure` with several improvements to erasure (declared run-time irrelevance). * New reflection primitives for meta-programming. # GHC supported versions Agda 2.6.4 has been tested with GHC 9.6.3, 9.4.7, 9.2.8, 9.0.2, 8.10.7, 8.8.4 and 8.6.5 on Linux, macOS and Windows. # Installation Agda 2.6.4 can be installed using cabal-install or stack: 1. Getting the tarball $ cabal update $ cabal get Agda-2.6.4 $ cd Agda-2.6.4 2. a. Using cabal-install $ cabal install -f +optimise-heavily -f +enable-cluster-counting 2. b. Using stack $ stack --stack-yaml stack-a.b.c.yaml install --flag Agda:optimise-heavily --flag Agda:enable-cluster-counting replacing `a.b.c` with your version of GHC. The flags mean: - optimise-heavily: Turn on extra optimisation for a faster Agda. Takes large resources during compilation of Agda. - enable-cluster-counting: Enable unicode clusters for alignment in the LaTeX backend. Requires the ICU lib to be installed and known to pkg-config. These flags can be dropped from the install if causing trouble. # Standard library You can use standard library v1.7.2 or the `master` branch of the standard library with Agda 2.6.4. This branch is available at https://github.com/agda/agda-stdlib/ # Fixed issues over Agda 2.6.3 https://hackage.haskell.org/package/Agda-2.6.4/changelog Enjoy Agda! Andreas, on behalf of the Agda Team _______________________________________________ Agda mailing list Agda at lists.chalmers.se https://lists.chalmers.se/mailman/listinfo/agda From allbery.b at gmail.com Sun Oct 8 15:17:49 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Sun, 8 Oct 2023 11:17:49 -0400 Subject: [Haskell-cafe] =?utf-8?q?XMonad_for_Wayland_=E2=80=94_seeking_hel?= =?utf-8?q?p?= Message-ID: We on the XMonad devteam (Tomáš, Tony, Yecine, and myself) have been collecting contributions for the past two years with an eye toward paying someone to work on a port of XMonad to Wayland, since none of us is up to the task. We think we now have enough contributions coming in monthly to pay for someone to work with us on it. Problem is, we have no idea who can do this. So this is a call for help, looking for someone who can write it. There is an existing project but it’s badly bitrotted, including using a very old and buggy version of wlroots , and L-as has had little time to revisit it. It’s not clear that it’s worth revisiting. One problem that’s unlikely to be solvable is that Wayland programs don’t set distinct identifiers that a manageHook could use, so the appName and className hooks can’t be ported. We welcome information to the contrary, though. So, help? Comments and especially proposals welcome on the Discourse thread . -- brandon s allbery kf8nh allbery.b at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From ben at well-typed.com Mon Oct 9 22:18:24 2023 From: ben at well-typed.com (Ben Gamari) Date: Mon, 09 Oct 2023 18:18:24 -0400 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available Message-ID: <87ttqzignm.fsf@smart-cactus.org> The GHC developers are very pleased to announce the availability of the final release of GHC 9.8.1. Binary distributions, source distributions, and documentation are available at downloads.haskell.org: https://downloads.haskell.org/ghc/9.8.1 GHC 9.8 brings a number of new features and improvements, including: * Preliminary support the `TypeAbstractions` language extension, allowing types to be bound in type declarations [TypeAbstractions]. * Support for the `ExtendedLiterals` extension, providing syntax for non-word-sized numeric literals in the surface language [extended-literals] * Improved rewrite rule matching behavior, allowing limited matching of higher-order patterns * Better support for user-defined warnings by way of the `WARNING` pragma [warnings] * The introduction of the new `GHC.TypeError.Unsatisfiable` constraint, allowing more predictable user-defined type errors [unsatisfiable] * Implementation of the export deprecation proposal, allowing module exports to be marked with `DEPRECATE` pragmas [deprecated-exports] * The addition of build semaphore support for parallel compilation; with coming support in `cabal-install` this will allow better use of parallelism in multi-package builds [jsem] * More efficient representation of info table provenance information, reducing binary sizes by over 50% in some cases when `-finfo-table-map` is in use A full accounting of changes can be found in the [release notes][]. Plans for GHC's future releases can be found on the [GHC Wiki][status]. We would like to thank GitHub, IOG, the Zw3rk stake pool, Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the Haskell Foundation, and other anonymous contributors whose on-going financial and in-kind support has facilitated GHC maintenance and release management over the years. Finally, this release would not have been possible without the hundreds of open-source contributors whose work comprise this release. Happy compiling, ~ Ben [TypeAbstractions]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst [extended-literals]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst [unsatisfiable]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst [warnings]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst [deprecated-exports]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst [jsem]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst [release notes]: https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html [status]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 487 bytes Desc: not available URL: From hecate at glitchbra.in Mon Oct 9 22:59:14 2023 From: hecate at glitchbra.in (hecate at glitchbra.in) Date: Mon, 09 Oct 2023 22:59:14 +0000 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <87ttqzignm.fsf@smart-cactus.org> References: <87ttqzignm.fsf@smart-cactus.org> Message-ID: <1e3c2c825d38b7312a5452bc3a367227af41a580@glitchbra.in> Congratulations, this is a very exciting release! 10 octobre 2023 à 00:18 "Ben Gamari" a écrit: > > The GHC developers are very pleased to announce the availability of the > final release of GHC 9.8.1. Binary distributions, source > distributions, and documentation are available at downloads.haskell.org: > > https://downloads.haskell.org/ghc/9.8.1 > > GHC 9.8 brings a number of new features and improvements, including: > > * Preliminary support the `TypeAbstractions` language extension, > allowing types to be bound in type declarations [TypeAbstractions]. > > * Support for the `ExtendedLiterals` extension, providing syntax for > non-word-sized numeric literals in the surface language > [extended-literals] > > * Improved rewrite rule matching behavior, allowing limited matching of > higher-order patterns > > * Better support for user-defined warnings by way of the `WARNING` > pragma [warnings] > > * The introduction of the new `GHC.TypeError.Unsatisfiable` > constraint, allowing more predictable user-defined type errors > [unsatisfiable] > > * Implementation of the export deprecation proposal, allowing module > exports to be marked with `DEPRECATE` pragmas [deprecated-exports] > > * The addition of build semaphore support for parallel compilation; > with coming support in `cabal-install` this will allow better use of > parallelism in multi-package builds [jsem] > > * More efficient representation of info table provenance information, > reducing binary sizes by over 50% in some cases when > `-finfo-table-map` is in use > > A full accounting of changes can be found in the [release notes][]. > Plans for GHC's future releases can be found on the [GHC Wiki][status]. > > We would like to thank GitHub, IOG, the Zw3rk stake pool, > Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the Haskell > Foundation, and other anonymous contributors whose on-going financial > and in-kind support has facilitated GHC maintenance and release > management over the years. Finally, this release would not have been > possible without the hundreds of open-source contributors whose work > comprise this release. > > Happy compiling, > > ~ Ben > > [TypeAbstractions]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst > [extended-literals]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst > [unsatisfiable]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst > [warnings]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst > [deprecated-exports]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst > [jsem]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst > [release notes]: https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html > [status]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. > From zoran.bosnjak at via.si Tue Oct 10 10:45:00 2023 From: zoran.bosnjak at via.si (Zoran =?utf-8?Q?Bo=C5=A1njak?=) Date: Tue, 10 Oct 2023 10:45:00 +0000 (UTC) Subject: [Haskell-cafe] ambiguous type variable question Message-ID: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Hi all, I want to convert a type level structure to the value level structure of the same shape. This is the simplified example: {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE UndecidableInstances #-} module Test where import GHC.TypeLits import Data.Kind import Data.Proxy -- This data structure serves both for 'type level' and 'value level'. data Content n s b = ContentRaw | ContentTable [(n, s)] | ContentBool b deriving instance (Show n, Show s, Show b) => Show (Content n s b) -- Convert from types to values. class IsSchema s where type SchemaVal s :: Type schema :: SchemaVal s instance IsSchema 'ContentRaw where type (SchemaVal 'ContentRaw) = Content Integer String Bool schema = ContentRaw instance IsSchema ('ContentTable '[]) where type (SchemaVal ('ContentTable '[])) = Content Integer String Bool schema = ContentTable [] instance ( IsSchema ('ContentTable ts) , t ~ '(n, s), KnownNat n, KnownSymbol s , SchemaVal ('ContentTable ts) ~ Content Integer String Bool ) => IsSchema ('ContentTable (t ': ts)) where type SchemaVal ('ContentTable (t ': ts)) = Content Integer String Bool schema = case schema @('ContentTable ts) of ContentTable lst -> let n = natVal (Proxy @n) s = symbolVal (Proxy @s) in ContentTable ((n,s) : lst) _ -> error "internal error" If I remove the type parameter 'b', 'ContentBool b' and coresponding 'Bool' from the sample, the conversion works as expected. >>> schema @'ContentRaw ContentRaw >>> schema @('ContentTable ( '(1,"test1") ': '(2,"test2") ': '[])) ContentTable [(1,"test1"),(2,"test2")] But for some reason, as soon as I extend the example with 'b' and 'Bool' as shown above, it results in the following error: * Could not deduce (SchemaVal ('ContentTable ts) ~ Content Integer String b0) from the context: (IsSchema ('ContentTable ts), t ~ '(n, s), KnownNat n, KnownSymbol s, SchemaVal ('ContentTable ts) ~ Content Integer String Bool) bound by the instance declaration at test2.hs:(34,5)-(37,43) The type variable `b1' is ambiguous How do I fix it or how do I rewrite it to get the intended result? regards, Zoran From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Tue Oct 10 11:34:36 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Tue, 10 Oct 2023 12:34:36 +0100 Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Message-ID: On Tue, Oct 10, 2023 at 10:45:00AM +0000, Zoran Bošnjak wrote: > I want to convert a type level structure to the value level structure of the same shape. > This is the simplified example: [...] > If I remove the type parameter 'b', 'ContentBool b' and coresponding 'Bool' from the sample, the conversion works as expected. The problem is that you have constraints IsSchema ('ContentTable ts) and SchemaVal ('ContentTable ts) but `ContentTable ts` is of kind `Content n s b` , for some `n` , `s` and `b`. The instance is claiming that it works for all `b` , but it doesn't! Your instance only works when the `ContentTable ts` is of kind `Content Nat Symbol Bool`. The `b` is invisible in the type siganture so it's hard to see that it is the problem! In fact it's really weird because you'll get errors like Could not deduce SchemaVal (ContentTable ts) ~ Content Integer String Bool from the context: SchemaVal (ContentTable ts) ~ Content Integer String Bool which look like they should immediately be satisfied! Instead what it means is Could not deduce SchemaVal (ContentTable ts :: Content n s b) ~ Content Integer String Bool from the context: SchemaVal (ContentTable ts :: Content Nat Symbol Bool) ~ Content Integer String Bool Fixing `b` solves the problem, for example: instance ( IsSchema ('ContentTable ts :: Content Nat Symbol Bool), t ~ '(n, s), KnownNat n, KnownSymbol s, SchemaVal ('ContentTable ts :: Content Nat Symbol Bool) ~ Content Integer String Bool ) => IsSchema ('ContentTable (t ': ts)) where type SchemaVal ('ContentTable (t ': ts)) = Content Integer String Bool schema = case schema @('ContentTable ts :: Content Nat Symbol Bool) of ContentTable lst -> let n = natVal (Proxy @n) s = symbolVal (Proxy @s) in ContentTable ((n, s) : lst) _ -> error "internal error" Tom From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Tue Oct 10 17:40:14 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Tue, 10 Oct 2023 18:40:14 +0100 Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Message-ID: On Tue, Oct 10, 2023 at 12:34:36PM +0100, Tom Ellis wrote: > On Tue, Oct 10, 2023 at 10:45:00AM +0000, Zoran Bošnjak wrote: > > I want to convert a type level structure to the value level structure of the same shape. > > This is the simplified example: > [...] > > If I remove the type parameter 'b', 'ContentBool b' and coresponding 'Bool' from the sample, the conversion works as expected. > > The problem is that you have constraints > > IsSchema ('ContentTable ts) and SchemaVal ('ContentTable ts) > > but `ContentTable ts` is of kind `Content n s b` , for some `n` , `s` > and `b`. The instance is claiming that it works for all `b` , but it > doesn't! Your instance only works when the `ContentTable ts` is of > kind `Content Nat Symbol Bool`. The `b` is invisible in the type > siganture so it's hard to see that it is the problem! [...] > Fixing `b` solves the problem, for example: In fact, my favourite way of dealing with it would be as follows (I don't know why we seemingly have to indirect through SchemaVal') -- This data structure serves both for 'type level' and 'value level'. data Content n s b = ContentRaw | ContentTable [(n, s)] | ContentBool b deriving instance (Show n, Show s, Show b) => Show (Content n s b) -- Convert from types to values. type IsSchema :: forall n s' b. Content n s' b -> Constraint class IsSchema s where type SchemaVal s :: Type schema :: SchemaVal s type SchemaVal' :: forall n s b. Content n s b -> Type type SchemaVal' s = SchemaVal s instance IsSchema 'ContentRaw where type SchemaVal 'ContentRaw = Content Integer String Bool schema = ContentRaw instance IsSchema ('ContentTable '[]) where type SchemaVal ('ContentTable '[]) = Content Integer String Bool schema = ContentTable [] instance ( IsSchema @Nat @Symbol @Bool ('ContentTable ts), t ~ '(n, s), KnownNat n, KnownSymbol s, SchemaVal' @Nat @Symbol @Bool ('ContentTable ts) ~ Content Integer String Bool ) => IsSchema ('ContentTable (t ': ts)) where type SchemaVal ('ContentTable (t ': ts)) = Content Integer String Bool schema = case schema @Nat @Symbol @Bool @('ContentTable ts) of ContentTable lst -> let n = natVal (Proxy @n) s = symbolVal (Proxy @s) in ContentTable ((n, s) : lst) _ -> error "internal error" From zubin at well-typed.com Tue Oct 10 18:02:39 2023 From: zubin at well-typed.com (Zubin Duggal) Date: Tue, 10 Oct 2023 23:32:39 +0530 Subject: [Haskell-cafe] [Haskell] [ANNOUNCE] Haskell Language Server 2.4.0.0 released Message-ID: Binaries for this release are available at https://downloads.haskell.org/~hls/haskell-language-server-2.4.0.0/. These binaries can be installed using [GHCup](https://www.haskell.org/ghcup/) or the Haskell VSCode extension. All of these tarballs have associated GPG signatures. The signature should be from `Zubin Duggal ` (key ID [588764FBE22D19C4](https://keys.openpgp.org/search?q=588764FBE22D19C4)). The prebuilt binaries in this release support the following GHC versions: - 9.0.2 - 9.2.8 - 9.4.7 - 9.6.3 - 9.8.1 # Changelog * Initial support for GHC 9.8.1, without plugins dependent on `ghc-exactprint` * Fix broken Windows binaries (#3822) Happy editing! - Zubin -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: From zoran.bosnjak at via.si Wed Oct 11 08:32:42 2023 From: zoran.bosnjak at via.si (Zoran =?utf-8?Q?Bo=C5=A1njak?=) Date: Wed, 11 Oct 2023 08:32:42 +0000 (UTC) Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Message-ID: <2034719846.6554.1697013162021.JavaMail.zimbra@via.si> Hi Tom, thanks a lot for your answers. It works as expected. I am building on this proposal, but I am again stuck on the following problems: - The second proposal introduces 'Content' to the 'IsSchema' type signature. Is it necessary? The problem is when I try to extend it to other types, like 'Variation' and 'Item' (see below). - I was able to implement instances (using the first proposed solution), but I am getting error on the call site (that is: on the 'main' function. The error says: ‘SchemaVal’ is a non-injective type family. I don't know how to get around it. I would appreciate if you have another look. Here is an updated example: {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} module Test where import Data.Kind import Data.Proxy import GHC.TypeLits data Content n s b = ContentRaw | ContentTable [(n, s)] | ContentBool b deriving instance (Show n, Show s, Show b) => Show (Content n s b) data Variation n s b = Element n (Content n s b) | Group [Item n s b] deriving instance (Show n, Show s, Show b) => Show (Variation n s b) data Item n s b = Spare n | Item s (Variation n s b) deriving instance (Show n, Show s, Show b) => Show (Item n s b) -- Convert from types to values. class IsSchema t where type SchemaVal t :: Type schema :: SchemaVal t -- Instances implementation... -- to be defined... -- Test type V1 = 'Element 1 'ContentRaw type I1 = 'Item "title1" V1 type I2 = 'Item "title2" V1 type G0 = 'Group '[] type G1 = 'Group (I1 ': '[]) type G2 = 'Group (I1 ': I2 ': '[]) main :: IO () main = do print $ schema @V1 print $ schema @I1 print $ schema @I2 print $ schema @G0 print $ schema @G1 print $ schema @G2 print (schema @G1 /= schema @G2) From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Wed Oct 11 09:09:41 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Wed, 11 Oct 2023 10:09:41 +0100 Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <2034719846.6554.1697013162021.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> <2034719846.6554.1697013162021.JavaMail.zimbra@via.si> Message-ID: On Wed, Oct 11, 2023 at 08:32:42AM +0000, Zoran Bošnjak wrote: > I was able to implement instances (using the first proposed > solution), but I am getting error on the call site (that is: on the > 'main' function. The error says: ‘SchemaVal’ is a non-injective type > family. I don't know how to get around it. I would appreciate if you > have another look. Sure, I'm happy to take another look, but ... > -- Instances implementation... > -- to be defined... won't I need these instances in order to see how to make it work? From stefan.wehr at gmail.com Wed Oct 11 09:27:03 2023 From: stefan.wehr at gmail.com (Stefan Wehr) Date: Wed, 11 Oct 2023 11:27:03 +0200 Subject: [Haskell-cafe] Call for Contributions: BOB 2024 [March 15, Deadline Nov 17] Message-ID: ================================================================================ BOB Conference 2024 "What happens when we use what's best for a change?" https://bobkonf.de/2024/cfc.html Berlin, Mar 17 Call for Contributions Deadline: November 17, 2023 ================================================================================ You are actively engaged in advanced software engineering methods, solve ambitious problem with software and are open to cutting-edge innovation? Attend this conference, meet people that share your goals, and get to know the best software tools and technologies available today. We strive to offer a day full of new experiences and impressions that you can use to immediately improve your daily life as a software developer. If you share our vision and want to contribute, submit a proposal for a talk or tutorial! NOTE: The conference fee will be waived for presenters. Travel expenses will not be covered (for exceptions see "Speaker Grants"). Shepherding ----------- The program committee offers shepherding to all speakers. Shepherding provides speakers assistance with preparing their sessions. Specifically: - advice on structure and presentation - review of talk slides - assistance with recording - review of recording, if applicable Speaker Grants -------------- BOB has Speaker Grants available to support speakers from groups under-represented in technology. We specifically seek women speakers, speakers of color, and speakers who are not able to attend the conference for financial reasons. Topics ------ We are looking for talks about best-of-breed software technology, e.g.: - functional programming - persistent data structures and databases - event-based modelling and architecture - "fancy types" (dependent types, gradual typing, linear types, ...) - formal methods for correctness and robustness - abstractions for concurrency and parallelism - metaprogramming - probabilistic programming - math and programming - controlled side effects - program synthesis - next-generation IDEs - effective abstractions for data analytics - … everything really that isn’t mainstream, but you think should be - … includeing rough ideas worth discussing. Presenters should provide the audience with information that is practically useful for software developers. Challenges ---------- Furthermore, we seek contributions on successful approaches for solving hard problems, for example: - bias in machine-learning systems - digital transformation in difficult settings - accessibiltity - systems with critical reliability requirements - ecologically sustainable software development We're especially interested in experience reports. Other topics are also relevant, e.g.: - introductory talks on technical background - overviews of a given field - demos and how-tos Requirements ------------ We accept proposals for presentations of 45 minutes (40 minutes talk + 5 minutes questions), as well as 90 minute tutorials for beginners. The language of presentation should be either English or German. Your proposal should include (in your presentation language of choice): - An abstract of max. 1500 characters. - A short bio/cv - Contact information (including at least email address) - A list of 3-5 concrete ideas of how your work can be applied in a developer's daily life - additional material (websites, blogs, slides, videos of past presentations, …) Organisation ------------ - Direct questions to konferenz at bobkonf dot de - Proposal deadline: November 17, 2023 - Notification: December 5, 2023 - Program: December 12, 2023 Submit here: https://pretalx.com/bob-2024/submit/ Program Committee ----------------- (more information here: https://bobkonf.de/2024/programmkomitee.html) - Matthias Fischmann, Wire - Matthias Neubauer, SICK AG - Nicole Rauch, Softwareentwicklung und Entwicklungscoaching - Michael Sperber, Active Group - Stefan Wehr, Hochschule Offenburg Scientific Advisory Board - Annette Bieniusa, TU Kaiserslautern - Torsten Grust, Uni Tübingen - Peter Thiemann, Uni Freiburg -------------- next part -------------- An HTML attachment was scrubbed... URL: From zoran.bosnjak at via.si Wed Oct 11 10:23:31 2023 From: zoran.bosnjak at via.si (Zoran =?utf-8?Q?Bo=C5=A1njak?=) Date: Wed, 11 Oct 2023 10:23:31 +0000 (UTC) Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Message-ID: <1428787314.6577.1697019811709.JavaMail.zimbra@via.si> I am including the instances. The error is: • Couldn't match expected type: SchemaVal G1 with actual type: SchemaVal G2 NB: ‘SchemaVal’ is a non-injective type family The type variables ‘b3’, ‘b2’ are ambiguous • In the second argument of ‘(/=)’, namely ‘schema @G2’ In the first argument of ‘print’, namely ‘(schema @G1 /= schema @G2)’ In a stmt of a 'do' block: print (schema @G1 /= schema @G2) {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} module Test where import Data.Kind import Data.Proxy import GHC.TypeLits data Content n s b = ContentRaw | ContentTable [(n, s)] | ContentBool b deriving instance (Show n, Show s, Show b) => Show (Content n s b) data Variation n s b = Element n (Content n s b) | Group [Item n s b] deriving instance (Show n, Show s, Show b) => Show (Variation n s b) data Item n s b = Spare n | Item s (Variation n s b) deriving instance (Show n, Show s, Show b) => Show (Item n s b) -- Convert from types to values. class IsSchema t where type SchemaVal t :: Type schema :: SchemaVal t instance IsSchema 'ContentRaw where type SchemaVal ContentRaw = Content Integer String Bool schema = ContentRaw instance IsSchema ('ContentTable '[]) where type SchemaVal (ContentTable '[]) = Content Integer String Bool schema = ContentTable [] instance ( IsSchema ('ContentTable ts :: Content Nat Symbol Bool) , t ~ '(n, s) , KnownNat n , KnownSymbol s , SchemaVal ('ContentTable ts :: Content Nat Symbol Bool) ~ Content Integer String Bool ) => IsSchema ('ContentTable (t ': ts)) where type SchemaVal ('ContentTable (t ': ts)) = Content Integer String Bool schema = case schema @('ContentTable ts :: Content Nat Symbol Bool) of ContentTable lst -> let n = natVal (Proxy @n) s = symbolVal (Proxy @s) in ContentTable ((n, s) : lst) _ -> error "internal error" instance IsSchema 'True where type SchemaVal 'True = Bool schema = True instance IsSchema 'False where type SchemaVal 'False = Bool schema = False instance ( IsSchema b , SchemaVal b ~ Bool ) => IsSchema ('ContentBool b) where type SchemaVal ('ContentBool b) = Content Integer String Bool schema = ContentBool (schema @b) instance ( KnownNat n , SchemaVal c ~ Content Integer String Bool , IsSchema c ) => IsSchema ('Element n c) where type SchemaVal ('Element n c) = Variation Integer String Bool schema = Element (natVal (Proxy @n)) (schema @c) instance IsSchema ('Group '[]) where type SchemaVal ('Group '[]) = Variation Integer String Bool schema = Group [] instance ( IsSchema t , IsSchema ('Group ts) , SchemaVal t ~ Item Integer String Bool , SchemaVal ('Group ts :: Variation Nat Symbol Bool) ~ Variation Integer String Bool ) => IsSchema ('Group (t ': ts)) where type SchemaVal ('Group (t ': ts)) = Variation Integer String Bool schema = case schema @('Group ts) of Group lst -> Group (schema @t : lst) _ -> error "internal error" instance (KnownNat n) => IsSchema ('Spare n) where type SchemaVal ('Spare n) = Item Integer String Bool schema = Spare (natVal $ Proxy @n) instance ( KnownSymbol s , IsSchema v , SchemaVal v ~ Variation Integer String Bool ) => IsSchema ('Item s v) where type SchemaVal ('Item s v) = Item Integer String Bool schema = Item (symbolVal $ Proxy @s) (schema @v) -- Test type C = 'ContentRaw type V1 = 'Element 1 C type I1 = 'Item "title1" V1 type I2 = 'Item "title2" V1 type G0 = 'Group '[] type G1 = 'Group (I1 ': '[]) type G2 = 'Group (I1 ': I2 ': '[]) main :: IO () main = do print $ schema @C print $ schema @('ContentBool 'True) print $ schema @V1 print $ schema @I1 print $ schema @I2 print $ schema @G0 print $ schema @G1 print $ schema @G2 print (schema @G1 /= schema @G2) From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Wed Oct 11 13:07:54 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Wed, 11 Oct 2023 14:07:54 +0100 Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <1428787314.6577.1697019811709.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> <1428787314.6577.1697019811709.JavaMail.zimbra@via.si> Message-ID: On Wed, Oct 11, 2023 at 10:23:31AM +0000, Zoran Bošnjak wrote: > I am including the instances. The error is: > > • Couldn't match expected type: SchemaVal G1 > with actual type: SchemaVal G2 > NB: ‘SchemaVal’ is a non-injective type family > The type variables ‘b3’, ‘b2’ are ambiguous > • In the second argument of ‘(/=)’, namely ‘schema @G2’ Try: type C = 'ContentRaw :: Content Nat Symbol Bool If that doesn't work I'll have a look later. Tom From zoran.bosnjak at via.si Wed Oct 11 13:24:06 2023 From: zoran.bosnjak at via.si (Zoran =?utf-8?Q?Bo=C5=A1njak?=) Date: Wed, 11 Oct 2023 13:24:06 +0000 (UTC) Subject: [Haskell-cafe] ambiguous type variable question In-Reply-To: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> References: <443791954.6309.1696934700989.JavaMail.zimbra@via.si> Message-ID: <551331534.6601.1697030646912.JavaMail.zimbra@via.si> > type C = 'ContentRaw :: Content Nat Symbol Bool This works. Thanks for your help. From kazu at iij.ad.jp Thu Oct 12 03:07:58 2023 From: kazu at iij.ad.jp (Kazu Yamamoto (=?iso-2022-jp?B?GyRCOzNLXE9CSScbKEI=?=)) Date: Thu, 12 Oct 2023 12:07:58 +0900 (JST) Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <87ttqzignm.fsf@smart-cactus.org> References: <87ttqzignm.fsf@smart-cactus.org> Message-ID: <20231012.120758.761285182974050466.kazu@iij.ad.jp> Hi, # The destination is only to haskell-cafe. Thank you for releasing GHC 9.8.1. I realized that "unzip" conflicts if Data.List and Data.Functor are imported. If this is intentional, please tell me which "unzip" we should use. --Kazu > The GHC developers are very pleased to announce the availability of > the > final release of GHC 9.8.1. Binary distributions, source > distributions, and documentation are available at > downloads.haskell.org: > > https://downloads.haskell.org/ghc/9.8.1 > > GHC 9.8 brings a number of new features and improvements, including: > > * Preliminary support the `TypeAbstractions` language extension, > allowing types to be bound in type declarations > [TypeAbstractions]. > > * Support for the `ExtendedLiterals` extension, providing syntax > for > non-word-sized numeric literals in the surface language > [extended-literals] > > * Improved rewrite rule matching behavior, allowing limited > matching of > higher-order patterns > > * Better support for user-defined warnings by way of the `WARNING` > pragma [warnings] > > * The introduction of the new `GHC.TypeError.Unsatisfiable` > constraint, allowing more predictable user-defined type errors > [unsatisfiable] > > * Implementation of the export deprecation proposal, allowing > module > exports to be marked with `DEPRECATE` pragmas > [deprecated-exports] > > * The addition of build semaphore support for parallel compilation; > with coming support in `cabal-install` this will allow better > use of > parallelism in multi-package builds [jsem] > > * More efficient representation of info table provenance > information, > reducing binary sizes by over 50% in some cases when > `-finfo-table-map` is in use > > A full accounting of changes can be found in the [release notes][]. > Plans for GHC's future releases can be found on the [GHC > Wiki][status]. > > We would like to thank GitHub, IOG, the Zw3rk stake pool, > Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the Haskell > Foundation, and other anonymous contributors whose on-going > financial > and in-kind support has facilitated GHC maintenance and release > management over the years. Finally, this release would not have been > possible without the hundreds of open-source contributors whose work > comprise this release. > > Happy compiling, > > ~ Ben > > > [TypeAbstractions]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst > [extended-literals]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst > [unsatisfiable]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst > [warnings]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst > [deprecated-exports]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst > [jsem]: > https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst > [release notes]: > https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html > [status]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status From haskellcafe at dandart.co.uk Thu Oct 12 10:27:19 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Thu, 12 Oct 2023 11:27:19 +0100 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <20231012.120758.761285182974050466.kazu@iij.ad.jp> References: <87ttqzignm.fsf@smart-cactus.org> <20231012.120758.761285182974050466.kazu@iij.ad.jp> Message-ID: I saw that Data.List was starting to be recommended to be imported qualified anyway... hence I always do: import Data.List qualified as L these days. From lemming at henning-thielemann.de Thu Oct 12 10:34:59 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Thu, 12 Oct 2023 12:34:59 +0200 (CEST) Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: References: <87ttqzignm.fsf@smart-cactus.org> <20231012.120758.761285182974050466.kazu@iij.ad.jp> Message-ID: <65010e9-6e9c-c54-7f50-d8ef8a5fc37@henning-thielemann.de> On Thu, 12 Oct 2023, Dan Dart wrote: > I saw that Data.List was starting to be recommended to be imported > qualified anyway... hence I always do: > > import Data.List qualified as L > > these days. Why not import qualified Data.List as List ? List.zip is pretty self-explanatory. From haskellcafe at dandart.co.uk Thu Oct 12 11:51:05 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Thu, 12 Oct 2023 12:51:05 +0100 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <65010e9-6e9c-c54-7f50-d8ef8a5fc37@henning-thielemann.de> References: <87ttqzignm.fsf@smart-cactus.org> <20231012.120758.761285182974050466.kazu@iij.ad.jp> <65010e9-6e9c-c54-7f50-d8ef8a5fc37@henning-thielemann.de> Message-ID: > Why not > import qualified Data.List as List > ? Yeah, that's way better. I don't know what's with me and having single letter import qualifications. Guess I'm just used to it. From jaro.reinders at gmail.com Thu Oct 12 11:57:50 2023 From: jaro.reinders at gmail.com (J. Reinders) Date: Thu, 12 Oct 2023 13:57:50 +0200 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <20231012.120758.761285182974050466.kazu@iij.ad.jp> References: <87ttqzignm.fsf@smart-cactus.org> <20231012.120758.761285182974050466.kazu@iij.ad.jp> Message-ID: <7FF6FD1B-4944-41CD-8BC4-E43C01FB6B7B@gmail.com> Hi Kazu, In addition to the other answers, I’d like to note that Data.List.unzip can be much more efficient than Data.Functor.unzip. In particular, Data.List.unzip only does a single traversal over the list and it can be fused with good producers. Whereas Data.Functor.unzip does two traversals and cannot fuse. The documentation should really be changed to mention that. So, I’d say use Data.List.unzip when possible. Cheers, Jaro > On 12 Oct 2023, at 05:07, Kazu Yamamoto (山本和彦) via Haskell-Cafe wrote: > > Hi, > # The destination is only to haskell-cafe. > > Thank you for releasing GHC 9.8.1. > > I realized that "unzip" conflicts if Data.List and Data.Functor are > imported. > > If this is intentional, please tell me which "unzip" we should use. > > --Kazu > >> The GHC developers are very pleased to announce the availability of the >> final release of GHC 9.8.1. Binary distributions, source >> distributions, and documentation are available at downloads.haskell.org: >> >> https://downloads.haskell.org/ghc/9.8.1 >> >> GHC 9.8 brings a number of new features and improvements, including: >> >> * Preliminary support the `TypeAbstractions` language extension, >> allowing types to be bound in type declarations [TypeAbstractions]. >> >> * Support for the `ExtendedLiterals` extension, providing syntax for >> non-word-sized numeric literals in the surface language >> [extended-literals] >> >> * Improved rewrite rule matching behavior, allowing limited matching of >> higher-order patterns >> >> * Better support for user-defined warnings by way of the `WARNING` >> pragma [warnings] >> >> * The introduction of the new `GHC.TypeError.Unsatisfiable` >> constraint, allowing more predictable user-defined type errors >> [unsatisfiable] >> >> * Implementation of the export deprecation proposal, allowing module >> exports to be marked with `DEPRECATE` pragmas [deprecated-exports] >> >> * The addition of build semaphore support for parallel compilation; >> with coming support in `cabal-install` this will allow better use of >> parallelism in multi-package builds [jsem] >> >> * More efficient representation of info table provenance information, >> reducing binary sizes by over 50% in some cases when >> `-finfo-table-map` is in use >> >> A full accounting of changes can be found in the [release notes][]. >> Plans for GHC's future releases can be found on the [GHC Wiki][status]. >> >> We would like to thank GitHub, IOG, the Zw3rk stake pool, >> Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the Haskell >> Foundation, and other anonymous contributors whose on-going financial >> and in-kind support has facilitated GHC maintenance and release >> management over the years. Finally, this release would not have been >> possible without the hundreds of open-source contributors whose work >> comprise this release. >> >> Happy compiling, >> >> ~ Ben >> >> >> [TypeAbstractions]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst >> [extended-literals]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst >> [unsatisfiable]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst >> [warnings]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst >> [deprecated-exports]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst >> [jsem]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst >> [release notes]: https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html >> [status]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status > > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. From kazu at iij.ad.jp Fri Oct 13 02:42:07 2023 From: kazu at iij.ad.jp (Kazu Yamamoto (=?iso-2022-jp?B?GyRCOzNLXE9CSScbKEI=?=)) Date: Fri, 13 Oct 2023 11:42:07 +0900 (JST) Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.8.1 is now available In-Reply-To: <7FF6FD1B-4944-41CD-8BC4-E43C01FB6B7B@gmail.com> References: <87ttqzignm.fsf@smart-cactus.org> <20231012.120758.761285182974050466.kazu@iij.ad.jp> <7FF6FD1B-4944-41CD-8BC4-E43C01FB6B7B@gmail.com> Message-ID: <20231013.114207.1607352107743863334.kazu@iij.ad.jp> Hi Jaro, Thanks. I also noticed that Prelude exports "unzip" which is identical to Data.List. So, I should use it. --Kazu > Hi Kazu, > > In addition to the other answers, I’d like to note that > Data.List.unzip can be > much more efficient than Data.Functor.unzip. In particular, > Data.List.unzip > only does a single traversal over the list and it can be fused with > good > producers. Whereas Data.Functor.unzip does two traversals and > cannot fuse. > The documentation should really be changed to mention that. > > So, I’d say use Data.List.unzip when possible. > > Cheers, > > Jaro > >> On 12 Oct 2023, at 05:07, Kazu Yamamoto (山本和彦) via >> Haskell-Cafe wrote: >> >> Hi, >> # The destination is only to haskell-cafe. >> >> Thank you for releasing GHC 9.8.1. >> >> I realized that "unzip" conflicts if Data.List and Data.Functor are >> imported. >> >> If this is intentional, please tell me which "unzip" we should use. >> >> --Kazu >> >>> The GHC developers are very pleased to announce the availability >>> of the >>> final release of GHC 9.8.1. Binary distributions, source >>> distributions, and documentation are available at >>> downloads.haskell.org: >>> >>> https://downloads.haskell.org/ghc/9.8.1 >>> >>> GHC 9.8 brings a number of new features and improvements, >>> including: >>> >>> * Preliminary support the `TypeAbstractions` language extension, >>> allowing types to be bound in type declarations >>> [TypeAbstractions]. >>> >>> * Support for the `ExtendedLiterals` extension, providing syntax >>> for >>> non-word-sized numeric literals in the surface language >>> [extended-literals] >>> >>> * Improved rewrite rule matching behavior, allowing limited >>> matching of >>> higher-order patterns >>> >>> * Better support for user-defined warnings by way of the `WARNING` >>> pragma [warnings] >>> >>> * The introduction of the new `GHC.TypeError.Unsatisfiable` >>> constraint, allowing more predictable user-defined type errors >>> [unsatisfiable] >>> >>> * Implementation of the export deprecation proposal, allowing >>> module >>> exports to be marked with `DEPRECATE` pragmas >>> [deprecated-exports] >>> >>> * The addition of build semaphore support for parallel >>> compilation; >>> with coming support in `cabal-install` this will allow better >>> use of >>> parallelism in multi-package builds [jsem] >>> >>> * More efficient representation of info table provenance >>> information, >>> reducing binary sizes by over 50% in some cases when >>> `-finfo-table-map` is in use >>> >>> A full accounting of changes can be found in the [release >>> notes][]. >>> Plans for GHC's future releases can be found on the [GHC >>> Wiki][status]. >>> >>> We would like to thank GitHub, IOG, the Zw3rk stake pool, >>> Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the Haskell >>> Foundation, and other anonymous contributors whose on-going >>> financial >>> and in-kind support has facilitated GHC maintenance and release >>> management over the years. Finally, this release would not have >>> been >>> possible without the hundreds of open-source contributors whose >>> work >>> comprise this release. >>> >>> Happy compiling, >>> >>> ~ Ben >>> >>> >>> [TypeAbstractions]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst >>> [extended-literals]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst >>> [unsatisfiable]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst >>> [warnings]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst >>> [deprecated-exports]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst >>> [jsem]: >>> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst >>> [release notes]: >>> https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html >>> [status]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status >> >> >> _______________________________________________ >> Haskell-Cafe mailing list >> To (un)subscribe, modify options or view archives go to: >> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >> Only members subscribed via the mailman list are allowed to post. > > From lists at richarde.dev Fri Oct 13 10:01:34 2023 From: lists at richarde.dev (Richard Eisenberg) Date: Fri, 13 Oct 2023 10:01:34 +0000 Subject: [Haskell-cafe] CFP: Workshop on the Implementation of Type Systems (WITS) '24 Message-ID: <010f018b287bf553-bd521008-480f-4b4b-9bba-8d1ef23231ff-000000@us-east-2.amazonses.com> ---------------------------------------------------------------------- CALL FOR CONTRIBUTIONS 3rd Workshop on the Implementation of Type Systems WITS 2024 January 20, 2024 London, United Kingdom https://popl24.sigplan.org/home/wits-2024 ---------------------------------------------------------------------- WITS 2024 is the third Workshop on the Implementation of Type Systems. The workshop will be held on January 20, 2024, in London, United Kingdom, co-located with POPL. The goal of this workshop is to bring together the implementors of a variety of languages with advanced type systems. The main focus is on the practical issues that come up in the implementation of these systems, rather than the theoretical frameworks that underlie them. In particular, we want to encourage exchanging ideas between the communities around specific systems that would otherwise be accessible to only a very select group. The workshop will have a mix of invited and contributed talks, organized discussion times, and informal collaboration time. *Scope* We invite participants to share their experiences, study differences among the implementations, and generalize lessons from those. We also want to promote the creation of a shared vocabulary and set of best practices for implementing type systems. Here are a few examples of topics we are interested to discuss: * syntax with binders and substitution * conversion modulo beta and eta * implicit arguments and metavariables * unification and constraint solving * metaprogramming and tactic languages * editor integration and automation * discoverability of language features * pretty printing and error messages This list is not exhaustive, so please contact the PC chairs in case you are unsure if a topic falls within the scope of the workshop. *Submissions* WITS solicits two kinds of submissions: * Contributed talks on the basis of an abstract. This can be on recently published or submitted work, work in progress, or a project that is still in the idea phase. * Proposals for roundtable discussions. This can be on any topic within the scope of the workshop, but should have a broader scope than a contributed talk. If accepted, you will be in charge of leading a discussion of 45 minutes around the proposed topic together with other interested attendees. Both kinds of proposals should be accompanied by an abstract of max. 1 page (exclusive of references), formatted according to the guidelines for SIGPLAN conferences: use the `sigplan` option to the `acmart` LaTeX document class. WITS will have no published proceedings, so submitting to WITS does not interfere with submission (before, after, or simultaneously) with other venues. Submissions are handled via https://wits24.hotcrp.com/ . *Important Dates* - Abstract submission deadline: 10 November, 2023 (AoE) - Notification: 1 December, 2023 - Workshop in London: 20 January, 2024 *Attendance and registration* WITS 2024 is colocated with POPL 2024 in London, UK. Information on registration and attendance will be posted on the POPL website at https://popl24.sigplan.org/ . *Program Committee* Lennart Augustsson Epic Games, Sweden Edwin Brady St. Andrews, UK Jesper Cockx TU Delft, Netherlands co-chair Richard Eisenberg Jane Street, USA co-chair Jacques-Henri Jourdan CRNS, France Matthieu Sozeau INRIA, France Ningning Xie U. of Toronto, Canada -------------- next part -------------- An HTML attachment was scrubbed... URL: From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Fri Oct 13 13:06:29 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Fri, 13 Oct 2023 14:06:29 +0100 Subject: [Haskell-cafe] Release: stan, supporting GHCs 8.8-9.4 Message-ID: I'm pleased to announce a new release of `stan`, a static analysis tool for Haskell. `stan` now supports GHCs in the range 8.8-9.4[1]. ### About `stan` Stan is a command-line tool for analysing Haskell projects. It discovers which parts of the code can potentially be improved, and offers suggestions on how to do so. Read more about `stan` in its [`README`](https://github.com/kowainik/stan/#what-this-tool-is-about). ### Installation I recommend obtaining `stan` from Hackage by following [the installation instructions in the README](https://github.com/kowainik/stan/#hackage). https://hackage.haskell.org/package/stan-0.1.0.0 ### Help wanted `stan` lacks active maintainers and is currently in essential maintainance only mode. I am helping out to make sure `stan` can continue to build with newer GHCs. I would welcome assistance, particularly on the following issues: * Supporting GHC 9.6 * Supporting GHC 9.8 * Prospective support for GHC 9.10 * Fixing caching on Github Actions If you would like to contribute to Stan please [create an issue](https://github.com/kowainik/stan/issues) on the Github repository. ### Credits Thanks to the Kowainik team for creating `stan` in the first place. Thanks to Veronika Romashkina for accepting me as a new maintainer for the project. ---- [1] Some point releases are excluded because the GHC API doesn't seem to provide enough type information, notably the later releases in the 9.2 series. From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Sun Oct 15 19:32:13 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Sun, 15 Oct 2023 20:32:13 +0100 Subject: [Haskell-cafe] Release: stan, extending support to GHC 9.6 In-Reply-To: References: Message-ID: I'm pleased to announce an even newer release of `stan`, a static analysis tool for Haskell. This release extends last week's release by adding support for 9.6, extending the supported range to 8.8-9.6. ### About `stan` Stan is a command-line tool for analysing Haskell projects. It discovers which parts of the code can potentially be improved, and offers suggestions on how to do so. Read more about `stan` in its [`README`](https://github.com/kowainik/stan/#what-this-tool-is-about). ### Installation I recommend obtaining `stan` from Hackage by following [the installation instructions in the README](https://github.com/kowainik/stan/#hackage). https://hackage.haskell.org/package/stan-0.1.0.0 ### Help wanted `stan` lacks active maintainers and is currently in essential maintainance only mode. I am helping out to make sure `stan` can continue to build with newer GHCs. I would welcome assistance, particularly on the following issues: * Supporting GHC 9.8 * Prospective support for GHC 9.10 * Fixing caching on Github Actions If you would like to contribute to Stan please [create an issue](https://github.com/kowainik/stan/issues) on the Github repository. ---- [1] Some point releases are excluded because the GHC API doesn't seem to provide enough type information, notably the later releases in the 9.2 series. From robstewart57 at gmail.com Tue Oct 17 14:50:50 2023 From: robstewart57 at gmail.com (Rob Stewart) Date: Tue, 17 Oct 2023 15:50:50 +0100 Subject: [Haskell-cafe] CFP: Workshop on Hardware Acceleration of Functional and Declarative Languages Message-ID: Hi haskell-cafe, Call for participation: HAFDAL 2024 The 1st Workshop on Hardware Acceleration of Functional and Declarative Languages (HAFDAL) will be co-located with HPCA, Edinburgh on March 2nd or 3rd 2024. This workshop will bring together computer architects and programming language implementers to explore software/hardware co-designs of high level execution models. We invite two forms of participation: (1) full paper submissions for 30 minute talks, (2) 5-10 minute lightning talks about related projects and early results. For full papers, we are looking for submissions that cover the motivation, design, or real-world application of hardware technology for functional/declarative languages, their compilers and runtime systems. Submission deadline: 20 November 2023. The call for participation and all key dates are here: https://haflang.github.io/images/hafdal24_cfp.pdf The workshop's website is: https://haflang.github.io/workshops/hafdal24.html Best wishes, Rob Stewart Associate Professor Mathematical and Computer Sciences Heriot-Watt University -------------- next part -------------- An HTML attachment was scrubbed... URL: From msantolu at barnard.edu Tue Oct 17 20:20:00 2023 From: msantolu at barnard.edu (Mark Santolucito) Date: Tue, 17 Oct 2023 16:20:00 -0400 Subject: [Haskell-cafe] Assistant Prof at Barnard College, Columbia U Message-ID: Hi all, Barnard College, Columbia University has an opening for an Assistant Professor: https://cs.barnard.edu/assistant-professor-computer-science-2024 The deadline is Oct 27 for full consideration. Barnard is the women's college of Columbia and has a 2-2 teaching load (typically with additional reductions). If you are interested, please feel free to reach out to me directly to discuss more. This is a unique place that I have really enjoyed the past few years! Mark https://www.marksantolucito.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From daniel.casanueva at proton.me Wed Oct 18 11:04:43 2023 From: daniel.casanueva at proton.me (Daniel Casanueva) Date: Wed, 18 Oct 2023 11:04:43 +0000 Subject: [Haskell-cafe] Request for take over: graphviz Message-ID: Hello, graphviz [1] maintenance has been inactive for a long time now. Revisions have been published, but the maintainer seems unresponsive. Last year, Bodigrim suggested the package needs a new maintainer in a GitHub thread [2] that one month ago I found while looking if someone had already done the fix I needed. I'm happy to help keeping the package alive so, about a month ago, I emailed Ivan (graphviz's author) to the e-mail address from his GitHub profile, offering my assistance with graphviz. I haven't gotten any answer yet, so I thought I should be making my offer public, as indicated by the "Taking over a package" wikipage [3]. I don't have big change plans for graphviz. Most likely I will just be patching it to keep it working with future GHC releases and reviewing/accepting PRs. Thank you, Daniel [1] https://hackage.haskell.org/package/graphviz [2] https://github.com/ivan-m/graphviz/pull/53#issuecomment-1261496914 [3] https://wiki.haskell.org/Taking_over_a_package From noonsilk at gmail.com Thu Oct 19 08:23:59 2023 From: noonsilk at gmail.com (Noon van der Silk) Date: Thu, 19 Oct 2023 09:23:59 +0100 Subject: [Haskell-cafe] Where did pem-0.2.4 come from? a.k.a. is anyone compelled to take-over this project? Message-ID: Glancing at hackage, I happened to noticed that pem is at 0.2.4 - https://hackage.haskell.org/package/pem-0.2.4 Glancing at the repo, I notice that pem is at 0.2.3 - https://github.com/vincenthz/hs-pem It seems there _is_ a tag for 0.2.4, but `master` has not been updated . Is there anyone out there that feels compelled or excited to fix this? And perhaps relatedly, given vincent has archived all these repos; perhaps there could be a kind of "global takeover" by the HF cryptography working group of these projects? -- Noon van der Silk, ن http://silky.github.io/ "My programming language is kindness." -------------- next part -------------- An HTML attachment was scrubbed... URL: From haskellcafe at dandart.co.uk Thu Oct 19 11:09:12 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Thu, 19 Oct 2023 12:09:12 +0100 Subject: [Haskell-cafe] Where did pem-0.2.4 come from? a.k.a. is anyone compelled to take-over this project? In-Reply-To: References: Message-ID: That's an odd one, I noticed that on postgrest as well (11.2.1 in tag, 11.2.0 in main branch), guess some people just don't use their main branch to have their latest features for some reason. From ivanperezdominguez at gmail.com Mon Oct 23 00:30:53 2023 From: ivanperezdominguez at gmail.com (Ivan Perez) Date: Sun, 22 Oct 2023 17:30:53 -0700 Subject: [Haskell-cafe] Hackage not building package Message-ID: Hi, I recently uploaded a package ( https://hackage.haskell.org/package/dunai-0.12.0) and hackage is not building it. I don't see info anywhere and I cannot re-trigger a build: attempting to do so shows the message "Report not found -Build report does not exist" Is everything ok with hackage? Thanks Ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: From bryan at haskell.foundation Mon Oct 23 12:27:18 2023 From: bryan at haskell.foundation (Bryan Richter) Date: Mon, 23 Oct 2023 15:27:18 +0300 Subject: [Haskell-cafe] Hackage not building package In-Reply-To: References: Message-ID: I'm afraid that whatever happened may have been transitory. I see a build log at https://hackage.haskell.org/package/dunai-0.12.0/reports/1 from 2023-10-23 07:29:30 UTC. I wonder if there's any sort of status page for the doc builder? On Mon, 23 Oct 2023 at 03:31, Ivan Perez wrote: > Hi, > > I recently uploaded a package ( > https://hackage.haskell.org/package/dunai-0.12.0) and hackage is not > building it. > > I don't see info anywhere and I cannot re-trigger a build: attempting to > do so shows the message "Report not found -Build report does not exist" > > Is everything ok with hackage? > > Thanks > > Ivan > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From johannes.waldmann at htwk-leipzig.de Wed Oct 25 16:37:18 2023 From: johannes.waldmann at htwk-leipzig.de (Johannes Waldmann) Date: Wed, 25 Oct 2023 18:37:18 +0200 Subject: [Haskell-cafe] when does ghc(i) expand type synonyms? Message-ID: <3c5d4f2f-bb90-4f3c-b8bf-95bfee3975ac@htwk-leipzig.de> Dear cafe, my students were asking: why are types printed differently here? ghci> :set +t ghci> "foo" "foo" it :: String ghci> reverse "foo" "oof" it :: [Char] ... and I add ghci> fst ("foo", 42) "foo" it :: String compiler docs do not really explain the difference https://downloads.haskell.org/ghc/latest/docs/users_guide/ghci.html#ghci-cmd-:set%20+t (it says "display the type of .." while technically it is "display some representation of the type of ..."?) I found this explanation of a somewhat related issue https://gitlab.haskell.org/ghc/ghc/-/issues/9183#note_83743 While playing around with this, I noticed: ghci> let x = "foo" in (x <> reverse x) "foooof" it :: String ghci> let x = "foo" in (x ++ reverse x) "foooof" it :: [Char] Well, it's just optics: when I extract the type programmatically, the synonym necessarily does get expanded ghci> import Data.Data ghci> typeOf (let x = "foo" in (x <> reverse x)) [Char] it :: TypeRep - Johannes From haskellcafe at dandart.co.uk Wed Oct 25 17:06:36 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Wed, 25 Oct 2023 18:06:36 +0100 Subject: [Haskell-cafe] when does ghc(i) expand type synonyms? In-Reply-To: <3c5d4f2f-bb90-4f3c-b8bf-95bfee3975ac@htwk-leipzig.de> References: <3c5d4f2f-bb90-4f3c-b8bf-95bfee3975ac@htwk-leipzig.de> Message-ID: Adjacently, I think a valuable question to ask is "how can you set type alias defaults in things like :t and in errors?" From olf at aatal-apotheke.de Thu Oct 26 19:38:21 2023 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Thu, 26 Oct 2023 21:38:21 +0200 Subject: [Haskell-cafe] when does ghc(i) expand type synonyms? Message-ID: <4e89e0cfc0ba6a82fa08990cfd91bbd7559f3696.camel@aatal-apotheke.de> > ghci> :set +t > > ghci> "foo" > "foo" > it :: String > > ghci> reverse "foo" > "oof" > it :: [Char] I'm not a GHC expert, but my guess is: It must have something to do with unifying the argument types with the type signature of the function. In (<>), the two argument and the result types are identical. Hence it can be safely said that  x <> whatever as long as this expression is valid, has the same type as x. In contrast, the result type of (++) is always of the shape [a]. Hence String gets unified with [a] which forces expansion of the type synonym. Consider: class Foo a where {rev :: a -> a; conc :: a -> a -> a} instance Foo [a] where {rev = reverse; conc = (++)} revconc :: Foo a => a -> a; revconc a = conc a (rev a) :t revconc ("foo" :: String) revconc ("foo" :: String) :: String So as long has you hide (++) in a type signature that proves input and output are the same, synonyms don't get expanded. Olaf From capn.freako at gmail.com Fri Oct 27 18:36:53 2023 From: capn.freako at gmail.com (David Banas) Date: Fri, 27 Oct 2023 11:36:53 -0700 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? Message-ID: Hi all, What is the simplest way to translate a non-monadic line of Haskell code, such as: res = map foo xs `using` parList rseq For use in the IO monad? This doesn’t work: res <- mapM fooM xs `using` parTraversable rseq complaining: No Traversable instance for IO. Thanks, -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Fri Oct 27 18:43:07 2023 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Fri, 27 Oct 2023 19:43:07 +0100 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: References: Message-ID: On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: > What is the simplest way to translate a non-monadic line of Haskell code, such as: > > res = map foo xs `using` parList rseq > > For use in the IO monad? > > This doesn’t work: > > res <- mapM fooM xs `using` parTraversable rseq The docs for Control.Parallel.Strategies say "The parallel tasks evaluated by a Strategy may have no side effects. For non-deterministic parallel programming, see Control.Concurrent."[1]. So I guess you should look into Control.Concurrent[2]. Tom [1] https://www.stackage.org/haddock/lts-21.17/parallel-3.2.2.0/Control-Parallel-Strategies.html#v:using [2] https://www.stackage.org/haddock/lts-21.17/base-4.17.2.0/Control-Concurrent.html From allbery.b at gmail.com Fri Oct 27 18:48:29 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Fri, 27 Oct 2023 18:48:29 +0000 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: References: Message-ID: Doesn't `async` have things for this? On Fri, Oct 27, 2023 at 6:43 PM Tom Ellis < tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk> wrote: > On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: > > What is the simplest way to translate a non-monadic line of Haskell > code, such as: > > > > res = map foo xs `using` parList rseq > > > > For use in the IO monad? > > > > This doesn’t work: > > > > res <- mapM fooM xs `using` parTraversable rseq > > The docs for Control.Parallel.Strategies say "The parallel tasks > evaluated by a Strategy may have no side effects. For > non-deterministic parallel programming, see Control.Concurrent."[1]. > So I guess you should look into Control.Concurrent[2]. > > Tom > > [1] > https://www.stackage.org/haddock/lts-21.17/parallel-3.2.2.0/Control-Parallel-Strategies.html#v:using > > [2] > https://www.stackage.org/haddock/lts-21.17/base-4.17.2.0/Control-Concurrent.html > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -- brandon s allbery kf8nh allbery.b at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From ietf-dane at dukhovni.org Fri Oct 27 18:51:52 2023 From: ietf-dane at dukhovni.org (Viktor Dukhovni) Date: Fri, 27 Oct 2023 14:51:52 -0400 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: References: Message-ID: On Fri, Oct 27, 2023 at 07:43:07PM +0100, Tom Ellis wrote: > On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: > > What is the simplest way to translate a non-monadic line of Haskell code, such as: > > > > res = map foo xs `using` parList rseq > > > > For use in the IO monad? > > > > This doesn’t work: > > > > res <- mapM fooM xs `using` parTraversable rseq > > The docs for Control.Parallel.Strategies say "The parallel tasks > evaluated by a Strategy may have no side effects. For > non-deterministic parallel programming, see Control.Concurrent."[1]. > So I guess you should look into Control.Concurrent[2]. For a more friendly interface: https://hackage.haskell.org/package/async-2.2.4/docs/Control-Concurrent-Async.html If the number of concurrent tasks is reasonably modest, a good fit could be `mapConcurrently`. For much larger numbers of tasks, it is best to run the jobs at a bounded concurrency, which may bring a BoundedChan to which the items to process are written, another to which results are written and a set of threads that do the processing, repeatedly reading more data until the channel is drained. *The* book on subject is: https://simonmar.github.io/pages/pcph.html -- Viktor. From capn.freako at gmail.com Fri Oct 27 19:04:36 2023 From: capn.freako at gmail.com (David Banas) Date: Fri, 27 Oct 2023 12:04:36 -0700 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: References: Message-ID: Thank you all for the quick replies! `mapConcurrently` was exactly what I needed. :) -db > On Oct 27, 2023, at 11:51 AM, Viktor Dukhovni wrote: > > On Fri, Oct 27, 2023 at 07:43:07PM +0100, Tom Ellis wrote: >> On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: >>> What is the simplest way to translate a non-monadic line of Haskell code, such as: >>> >>> res = map foo xs `using` parList rseq >>> >>> For use in the IO monad? >>> >>> This doesn’t work: >>> >>> res <- mapM fooM xs `using` parTraversable rseq >> >> The docs for Control.Parallel.Strategies say "The parallel tasks >> evaluated by a Strategy may have no side effects. For >> non-deterministic parallel programming, see Control.Concurrent."[1]. >> So I guess you should look into Control.Concurrent[2]. > > For a more friendly interface: > > https://hackage.haskell.org/package/async-2.2.4/docs/Control-Concurrent-Async.html > > If the number of concurrent tasks is reasonably modest, a good fit could > be `mapConcurrently`. > > For much larger numbers of tasks, it is best to run the jobs at a > bounded concurrency, which may bring a BoundedChan to which the items to > process are written, another to which results are written and a set of > threads that do the processing, repeatedly reading more data until the > channel is drained. > > *The* book on subject is: https://simonmar.github.io/pages/pcph.html > > -- > Viktor. > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From capn.freako at gmail.com Fri Oct 27 19:14:30 2023 From: capn.freako at gmail.com (David Banas) Date: Fri, 27 Oct 2023 12:14:30 -0700 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: References: Message-ID: <28F88A7A-BCEE-4C4A-931C-A101FE7162C4@gmail.com> After switching to `mapConcurrently` I’m getting this: SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) Is that to be expected? -db > On Oct 27, 2023, at 11:51 AM, Viktor Dukhovni wrote: > > On Fri, Oct 27, 2023 at 07:43:07PM +0100, Tom Ellis wrote: >> On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: >>> What is the simplest way to translate a non-monadic line of Haskell code, such as: >>> >>> res = map foo xs `using` parList rseq >>> >>> For use in the IO monad? >>> >>> This doesn’t work: >>> >>> res <- mapM fooM xs `using` parTraversable rseq >> >> The docs for Control.Parallel.Strategies say "The parallel tasks >> evaluated by a Strategy may have no side effects. For >> non-deterministic parallel programming, see Control.Concurrent."[1]. >> So I guess you should look into Control.Concurrent[2]. > > For a more friendly interface: > > https://hackage.haskell.org/package/async-2.2.4/docs/Control-Concurrent-Async.html > > If the number of concurrent tasks is reasonably modest, a good fit could > be `mapConcurrently`. > > For much larger numbers of tasks, it is best to run the jobs at a > bounded concurrency, which may bring a BoundedChan to which the items to > process are written, another to which results are written and a set of > threads that do the processing, repeatedly reading more data until the > channel is drained. > > *The* book on subject is: https://simonmar.github.io/pages/pcph.html > > -- > Viktor. > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From allbery.b at gmail.com Fri Oct 27 19:23:25 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Fri, 27 Oct 2023 19:23:25 +0000 Subject: [Haskell-cafe] Simplest way to move a ... `using` ... line into the IO monad? In-Reply-To: <28F88A7A-BCEE-4C4A-931C-A101FE7162C4@gmail.com> References: <28F88A7A-BCEE-4C4A-931C-A101FE7162C4@gmail.com> Message-ID: Yes, because `async` uses actual threads, not sparks like `Control.Parallel.Strategies`. On Fri, Oct 27, 2023 at 7:14 PM David Banas wrote: > After switching to `mapConcurrently` I’m getting this: > > SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) > > Is that to be expected? > > -db > > > On Oct 27, 2023, at 11:51 AM, Viktor Dukhovni > wrote: > > On Fri, Oct 27, 2023 at 07:43:07PM +0100, Tom Ellis wrote: > > On Fri, Oct 27, 2023 at 11:36:53AM -0700, David Banas wrote: > > What is the simplest way to translate a non-monadic line of Haskell code, > such as: > > res = map foo xs `using` parList rseq > > For use in the IO monad? > > This doesn’t work: > > res <- mapM fooM xs `using` parTraversable rseq > > > The docs for Control.Parallel.Strategies say "The parallel tasks > evaluated by a Strategy may have no side effects. For > non-deterministic parallel programming, see Control.Concurrent."[1]. > So I guess you should look into Control.Concurrent[2]. > > > For a more friendly interface: > > > https://hackage.haskell.org/package/async-2.2.4/docs/Control-Concurrent-Async.html > > If the number of concurrent tasks is reasonably modest, a good fit could > be `mapConcurrently`. > > For much larger numbers of tasks, it is best to run the jobs at a > bounded concurrency, which may bring a BoundedChan to which the items to > process are written, another to which results are written and a set of > threads that do the processing, repeatedly reading more data until the > channel is drained. > > *The* book on subject is: https://simonmar.github.io/pages/pcph.html > > -- > Viktor. > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. > > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -- brandon s allbery kf8nh allbery.b at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From capn.freako at gmail.com Sat Oct 28 00:11:33 2023 From: capn.freako at gmail.com (David Banas) Date: Fri, 27 Oct 2023 17:11:33 -0700 Subject: [Haskell-cafe] How to use the GPU in Apple M2 from Haskell? Message-ID: Does anyone have a good reference for explicitly accessing the GPU in the new Apple M2 chip from a user Haskell program? From capn.freako at gmail.com Sat Oct 28 18:36:17 2023 From: capn.freako at gmail.com (David Banas) Date: Sat, 28 Oct 2023 11:36:17 -0700 Subject: [Haskell-cafe] Should GHC 9.4.7 be native on MacBook Air M2? Message-ID: I’m working on a new MacBook Air M2. I just bumped my current Haskell project to stack LTS-21.17, after catching up on the GHC porting effort news. I did a stack clean / stack build and saw GHC 9.4.7 being installed, as expected, but still to the x86_64-osx directory: % l ~/.stack/programs x86_64-osx % l ~/.stack/programs/x86_64-osx ghc-8.10.3 ghc-8.10.4.tar.bz2 ghc-8.6.3.installed ghc-9.0.2 ghc-9.2.2.tar.bz2 ghc-9.2.7.installed ghc-8.10.3.installed ghc-8.4.3 ghc-8.6.3.tar.bz2 ghc-9.0.2.installed ghc-9.2.5 ghc-9.2.7.tar.bz2 ghc-8.10.3.tar.bz2 ghc-8.4.3.installed ghc-8.6.5 ghc-9.0.2.tar.bz2 ghc-9.2.5.installed ghc-9.4.7 ghc-8.10.4 ghc-8.4.3.tar.bz2 ghc-8.6.5.installed ghc-9.2.2 ghc-9.2.5.tar.bz2 ghc-9.4.7.installed ghc-8.10.4.installed ghc-8.6.3 ghc-8.6.5.tar.bz2 ghc-9.2.2.installed ghc-9.2.7 ghc-9.4.7.tar.bz2 I was expecting a native version; do I misunderstand something? -------------- next part -------------- An HTML attachment was scrubbed... URL: From leah at vuxu.org Sat Oct 28 18:56:07 2023 From: leah at vuxu.org (Leah Neukirchen) Date: Sat, 28 Oct 2023 20:56:07 +0200 Subject: [Haskell-cafe] Munich Haskell Meeting, 2023-10-31 @ 19:30 Message-ID: <87zg02shiw.fsf@vuxu.org> Dear all, Next week, our monthly Munich Haskell Meeting will take place again on Tuesday, October 31 at Iveria (Lindwurmstraße 159A) at 19h30. For details see here: http://muenchen.haskell.bayern/dates.html If you plan to join, please add yourself to this nuudel so we can reserve enough seats! It is OK to add yourself to the nuudel anonymously or pseudonymously. https://nuudel.digitalcourage.de/7ST4pxNRVj3rGLdO Everybody is welcome! cu, -- Leah Neukirchen https://leahneukirchen.org/ From capn.freako at gmail.com Sat Oct 28 19:09:42 2023 From: capn.freako at gmail.com (David Banas) Date: Sat, 28 Oct 2023 12:09:42 -0700 Subject: [Haskell-cafe] Should GHC 9.4.7 be native on MacBook Air M2? Message-ID: Ah, I needed this line in my stack.yaml file: arch: aarch64 Why is that? Shouldn’t it use the native architecture if it can support it? -db -------------- next part -------------- An HTML attachment was scrubbed... URL: From carter.schonwald at gmail.com Sat Oct 28 22:17:53 2023 From: carter.schonwald at gmail.com (Carter Schonwald) Date: Sat, 28 Oct 2023 18:17:53 -0400 Subject: [Haskell-cafe] Should GHC 9.4.7 be native on MacBook Air M2? In-Reply-To: References: Message-ID: Sounds like a Ux issue in stack…. On Sat, Oct 28, 2023 at 3:09 PM David Banas wrote: > Ah, I needed this line in my stack.yaml file: > > arch: aarch64 > > Why is that? > Shouldn’t it use the native architecture if it can support it? > > -db > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From carter.schonwald at gmail.com Sat Oct 28 22:19:09 2023 From: carter.schonwald at gmail.com (Carter Schonwald) Date: Sat, 28 Oct 2023 18:19:09 -0400 Subject: [Haskell-cafe] How to use the GPU in Apple M2 from Haskell? In-Reply-To: References: Message-ID: Write a program in metal shaders and link a c wrapper for the c++ wrapper of metal api into Haskell via the ffi. Or use opencl / OpenGL APIs that still work despite being deprecated. On Fri, Oct 27, 2023 at 8:11 PM David Banas wrote: > Does anyone have a good reference for explicitly accessing the GPU in the > new Apple M2 chip from a user Haskell program? > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From f.occhipinti at gmail.com Mon Oct 30 19:19:57 2023 From: f.occhipinti at gmail.com (fran) Date: Mon, 30 Oct 2023 20:19:57 +0100 Subject: [Haskell-cafe] Munich Haskell Meeting, 2023-10-31 @ 19:30 In-Reply-To: <87zg02shiw.fsf@vuxu.org> References: <87zg02shiw.fsf@vuxu.org> Message-ID: <17b8bc13-2ce5-5503-595e-0f3af76b8811@gmail.com> Nice! Of course, like most participants to this mailing list, i don't live in Munich and i would not take a flight to participate to a meetup so... where is the link to follow the event remotely? On 28.10.23 20:56, Leah Neukirchen wrote: > Dear all, > > Next week, our monthly Munich Haskell Meeting will take place again on > Tuesday, October 31 at Iveria (Lindwurmstraße 159A) at 19h30. > For details see here: > > http://muenchen.haskell.bayern/dates.html > > If you plan to join, please add yourself to this nuudel so we can > reserve enough seats! It is OK to add yourself to the nuudel > anonymously or pseudonymously. > > https://nuudel.digitalcourage.de/7ST4pxNRVj3rGLdO > > Everybody is welcome! > > cu, -------------- next part -------------- An HTML attachment was scrubbed... URL: From travis at athougies.net Tue Oct 31 22:31:34 2023 From: travis at athougies.net (Travis Athougies) Date: Tue, 31 Oct 2023 15:31:34 -0700 Subject: [Haskell-cafe] Question on Lexing Haskell syntax Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 According to the Haskell report [1] (See Note 5), a virtual `}` token is inserted if parsing the next token would cause a parse error and the indentation stack is non-empty. I'm trying to lex and parse Haskell source and this sort of interplay (which requires two-way communication between lexer and parser) makes it very difficult to write a conformant implementation. I can't change the standard (obviously), but I'm wondering if this is actually what GHC (de facto the only Haskell compiler) does, or if it applies some other rule. If so, does anyone know the exact mechanism of its implementation? I've been programming Haskell for more than a decade, and while I have an intuitive understanding of the indentation rules, I would have assumed the source could be lexed without also having a parser. In particular, the note seems to imply that the main purpose of this is to properly lex `let`/`in` bindings. Perhaps there's an alternate equivalent rule? Curious to hear other's thoughts. Travis [1] https://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3 -----BEGIN PGP SIGNATURE----- iIsEARYKADMWIQRW81c55hOCXuY5k/H+BxaRGQDTjQUCZUGARhUcdHJhdmlzQGF0 aG91Z2llcy5uZXQACgkQ/gcWkRkA041W+wEA/7n5NejGTYu4O6N+Pt7Rn0bBRw6D 5D96idagahXqXioA/18hxYFpY45lWwB7pKCh83xQJu2Bcwkxj1xhhCEZBcoA =FrDy -----END PGP SIGNATURE-----