From viercc at gmail.com Mon May 6 04:53:37 2024 From: viercc at gmail.com (=?UTF-8?B?5a6u6YeM5rS45Y+4?=) Date: Mon, 6 May 2024 13:53:37 +0900 Subject: [Haskell-cafe] Contact to the maintainer of "finitary" package Message-ID: Hello everyone, I'd like to contact to the maintainer of "finitary" package [1] hosted at notabug.org [2]. The package is failing to build at Hackage, but a simple metadata fix [3] would solve the problem. As I couldn't find a way to contact the maintainer, (Sam Derbyshire, "sheaf" (sorry for missing titles)) I'm shouting public here. [1] https://hackage.haskell.org/package/finitary-2.1.1.1 [2] https://notabug.org/sheaf/finitary [3] https://notabug.org/viercc/finitary/commit/d6de614d0556b984e5bae97af01d94ae3481fba4 -- /* Koji Miyazato */ From compl.yue at gmail.com Tue May 7 10:59:27 2024 From: compl.yue at gmail.com (Compl Yue) Date: Tue, 7 May 2024 18:59:27 +0800 Subject: [Haskell-cafe] Help with GHC.Generics -- How to get field selector name into value level? Message-ID: <92A96880-21B9-468C-B323-0C626A6800E3@gmail.com> Greetings! I’m stuck: ```hs -- | a named (with a selector) field instance (KnownSymbol sel, DbaStorable' f, f ~ K1 R c, DbaField c ft, Typeable c) => DbaStorable' (M1 S ('MetaSel ('Just sel) su ss ds) f) where -- _loadDbaField store bsp fno cno vin = M1 <$> _loadDbaField store fsp fno cno vin where fieldName = symbolVal (Proxy @sel) fieldPath = fieldName ++ "::" ++ dbaBasePath @c fsp = case bsp of "" -> fieldPath -- a field of a top level record _ -> bsp ++ "/" ++ fieldPath -- a field of a nested record _storeDbaField store bsp fno cno m@(M1 xr) = _storeDbaField store fsp fno cno xr where fieldName = selName m fieldPath = fieldName ++ "::" ++ dbaBasePath @c fsp = case bsp of "" -> fieldPath -- a field of a top level record _ -> bsp ++ "/" ++ fieldPath -- a field of a nested record ``` With the `selName` approach as in the `_storeDbaField ` above, it’s rejected as: ```log • Could not deduce (GHC.Generics.SingI su) arising from a use of ‘selName’ from the context: (KnownSymbol sel, DbaStorable' f, f ~ K1 R c, DbaField c ft, Typeable c) bound by the instance declaration at src/Frp/DbaStore/Internal.hs:(646,3)-(647,55) • In the expression: selName m In an equation for ‘fieldName’: fieldName = selName m In an equation for ‘_storeDbaField’: ``` But can I really evident `SingI` instance from my side? Which is unexpected from GHC.Generics... Otherwise with the `symbolVal` approach as in the `_loadDbaField ` above, there’s the complain against the ultimate use site: ```log • No instance for (GHC.TypeLits.KnownSymbol sel0) arising from a use of ‘storeDba’ • In a stmt of a 'do' block: storeDba rootDir series'data In the expression: do forM_ series'data print storeDba rootDir series'data sd <- loadDba @(Envelope2D Double) rootDir forM_ sd print ``` But I failed to prove `KnownSymbol sel` with all methods I can think of. Help please! With best regards, Compl -------------- next part -------------- An HTML attachment was scrubbed... URL: From zubin at well-typed.com Wed May 8 11:32:02 2024 From: zubin at well-typed.com (Zubin Duggal) Date: Wed, 8 May 2024 17:02:02 +0530 Subject: [Haskell-cafe] [Haskell] [ANNOUNCE] Haskell Language Server 2.8.0.0 released Message-ID: The HLS team is pleased to announce the release of Haskell Language Server [2.8.0.0](https://github.com/haskell/haskell-language-server/releases/tag/2.8.0.0). Binaries for this release are available at [Index of /~hls/haskell-language-server-2.8.0.0/](https://downloads.haskell.org/~hls/haskell-language-server-2.8.0.0/). 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.2.8 - 9.4.8 - 9.6.5 - 9.8.2 # Changelog - Bindists for GHC 9.6.5 - New hls-notes plugin (#4126, @jvanbruegge) - Floskell, hlint and stylish-haskell plugins enabled for GHC 9.8 - Improvements for hls-graph increasing robustness (#4087, @soulomoon) - Improvements to multi-component support (#4096, #4109, #4179, @wz1000, @fendor) 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 fa-ml at ariis.it Wed May 8 15:17:15 2024 From: fa-ml at ariis.it (Francesco Ariis) Date: Wed, 8 May 2024 17:17:15 +0200 Subject: [Haskell-cafe] [ANN] Cabal 3.12 released Message-ID: Dear cafe, Cabal team is happy to announce the release of `Cabal` the library version `3.12.0.0` and the companion pre-release of `cabal-install` (the commandline tool; scroll down for more information). ## What is new? There are a number of new features in this release (`Cabal`) and pre-release (`cabal-install`), such as: - Add support for `asm`, `cmm`, and `js` sources in executable components. - Add `--haddock-output-dir` flag to `cabal haddock`. - Add `--semaphore` option to `./Setup build` interface. - Add `--promised-dependency` flag to `./Setup configure` interface. - Add the ability to `--ignore` specific checks to `cabal check`. - Add support for `GHC2024` language edition. - Add support for loading multiple components into one repl session (especially important for HLS users). - Add `cabal path` command. - Add support for authentication tokens for uploading to Hackage. - Allow more flags in the init section of config file. - Add `--semaphore` flag to enable interaction with GHC Job Server protocol. - Adds functionality for the `--offline` flag with the `build` command. - Improve solver rejections in brevity and accuracy. There is much more: for a detailed list of enhancements, changes, and bugfixes, please check the Cabal-3.12.0.0 changelog [1] (and the cabal-install 3.12.0.0-prerelease changelog [2]. [1] https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.0.0.md [2] https://github.com/haskell/cabal/blob/master/release-notes/WIP-cabal-install-3.12.x.0.md ## Authors and contributors Cabal is a collaborative effort; these people contributed with code to this release: aleeusgr Adam Gundry Andrea Bedini Andreas Abel Andreas Klebinger Arjun Kathuria Artem Pelenitsyn BasLaa Bas Laarakker Ben Gamari Bodigrim Brandon Chinn Brandon S. Allbery Bryan Richter Colton Clemmer Csaba Hruska cydparser Daniel Trstenjak David Binder David Christiansen Edwin Marshall Elodie Lander Erik de Castro Lopo Felix Yan Fendor Finley Francesco Ariis Francesco Gazzetta Fraser Tweedale Gershom Bazerman Hamish Mackenzie Hécate Moonlight Ikko Eltociear Ashimine Jana Chadt Javier Sagredo Jean-Paul Calderone Jens Petersen Jessica Hamilton John Paul Adrian Glaubitz Josh Meredith Julia Longtin Julian Ospald Kazuki Okamoto Kleidukos Kristen Kozak Krzysztof Gogolewski liamzee Liisi Kerik Lin Runze malteneuss Malte Neuss Marcin Szamotulski Matthew Pickering Mel Zuser Michael Peyton Jones Mike Pilgrem Mikolaj Konarski mixphix Oleg Grenrus Ondřej Šebek Patrick Augusto Patrick Dougherty Phil de Joux Pierre Le Marre Rebecca Turner Rodrigo Mesquita Ryan Scott Samuel Thibault Sander Sebastian Tee Sergey Vinokurov Shae Erisson sheaf Simon Hengel Siyuan Chen Sören Tempel Suganya Raju Sylvain Henry Taylor Fausak Teo Camarasu Tom Ellis Tom Smeding Torsten Schmits Tristan Cacqueray Troels Henriksen Wismill Yvan Sraka The release could not be done without the help of the manual QA team and devops people, we thank them both. Thanks also to the many users who provided bug reports and suggestions for improvements. A special mention to Hécate, who recently stepped down from Cabal release coordination and left the process in a better, more organised shape than what was before. ## How to get the `cabal-install` pre-release This release is a Cabal-the-library release, but if you want to test the new features of `cabal-install`, you can download the pre-release of the commandline tool via GHCup. Use one of the following commands, depending on your OS: ghcup --no-cache install cabal -u 'https://gitlab.haskell.org/haskell/cabal/-/jobs/1848320/artifacts/raw/out/cabal-install-3.11.0.0-x86_64-linux-alpine3_12.tar.xz' 3.12.0.0-prerelease ghcup --no-cache install cabal -u 'https://gitlab.haskell.org/haskell/cabal/-/jobs/1848326/artifacts/raw/out/cabal-install-3.11.0.0-aarch64-darwin.tar.xz' 3.12.0.0-prerelease ghcup --no-cache install cabal -u 'https://gitlab.haskell.org/haskell/cabal/-/jobs/1848327/artifacts/raw/out/cabal-install-3.11.0.0-x86_64-windows.zip' 3.12.0.0-prerelease or an analogous command for any other of the artifacts produced by the [pre-release pipeline](https://gitlab.haskell.org/haskell/cabal/-/pipelines/93759). ## How to help? Cabal is a complex piece of software running on many different machine. Two easy ways to help the development team producing quality releases are: - Join the manual QA team - Test nightly binary `cabal-install` snapshots and pre-releases (such as the 3.12.0.0 pre-release mentioned above) and report any problem you find. [3] https://discourse.haskell.org/t/manual-qa-for-cabal-install/6225 From Graham.Hutton at nottingham.ac.uk Thu May 9 07:49:07 2024 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Thu, 9 May 2024 07:49:07 +0000 Subject: [Haskell-cafe] Journal of Functional Programming - Call for PhD Abstracts Message-ID: <020A2F19-1438-44CA-8884-CD93CA084A0C@nottingham.ac.uk> Dear all, If you or one of your students recently completed a PhD (or Habilitation) in the area of functional programming, please submit the dissertation abstract for publication in JFP: simple process, no refereeing, open access, 200+ published to date, deadline 31st May 2024. Please share! Best wishes, Graham Hutton ============================================================ CALL FOR PHD ABSTRACTS Journal of Functional Programming Deadline: 31st May 2024 http://tinyurl.com/jfp-phd-abstracts ============================================================ PREAMBLE: Many students complete PhDs in functional programming each year. As a service to the community, twice per year the Journal of Functional Programming publishes the abstracts from PhD dissertations completed during the previous year. The abstracts are made freely available on the JFP website, i.e. not behind any paywall. They do not require any transfer of copyright, merely a license from the author. A dissertation is eligible for inclusion if parts of it have or could have appeared in JFP, that is, if it is in the general area of functional programming. The abstracts are not reviewed. Please submit dissertation abstracts according to the instructions below. We welcome submissions from both the student and the advisor/supervisor although we encourage them to coordinate. Habilitation dissertations are also eligible for inclusion. ============================================================ SUBMISSION: Please submit the following information to Graham Hutton by 31st May 2024. o Dissertation title: (including any subtitle) o Student: (full name) o Awarding institution: (full name and country) o Date of award: (month and year; depending on the institution, this may be the date of the viva, corrections being approved, graduation ceremony, or otherwise) o Advisor/supervisor: (full names) o Dissertation URL: (please provide a permanently accessible link to the dissertation if you have one, such as to an institutional repository or other public archive; links to personal web pages should be considered a last resort) o Dissertation abstract: (plain text, maximum 350 words; you may use \emph{...} for emphasis, but we prefer no other markup or formatting; if your original abstract exceeds the word limit, please submit an abridged version within the limit) Please do not submit a copy of the dissertation itself, as this is not required. JFP reserves the right to decline to publish abstracts that are not deemed appropriate. ============================================================ PHD ABSTRACT EDITOR: Graham Hutton School of Computer Science University of Nottingham Nottingham NG8 1BB United Kingdom ============================================================ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please contact the sender and delete the email and attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. Email communications with the University of Nottingham may be monitored where permitted by law. From hilco.wijbenga at gmail.com Thu May 9 19:29:22 2024 From: hilco.wijbenga at gmail.com (Hilco Wijbenga) Date: Thu, 9 May 2024 12:29:22 -0700 Subject: [Haskell-cafe] System.IO but not with Data.String? Message-ID: Hi all, We have Text and ByteString as alternatives to String but as soon as you want to do anything IO related (read a file, get a directory's content, et cetera) it seems your only option is to use String. For an occasional IO action, this is obviously irrelevant but for a compiler, a build system, or anything else that does a lot of IO this seems like it would be(come) an issue. So I was wondering what would be involved in adding (portable) support for System.IO with an alternative to String (this alternative does not necessarily need to be Text or ByteString). I did a little bit of research into how GHC handles this and there appear to be several other String types in the GHC tree, including ByteString(?). How feasible is an alternative System.IO API? How tied to GHC would such an alternative need to be? To be clear, I am not looking to _replace_ System.IO but to _add_ an alternative API (and not a wrapper that maps to/from String). Please do not assume I necessarily know what I am talking about! Especially, when it comes to the "portable" part. :-) Cheers, Hilco From lemming at henning-thielemann.de Thu May 9 20:01:40 2024 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Thu, 9 May 2024 22:01:40 +0200 (CEST) Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: On Thu, 9 May 2024, Hilco Wijbenga wrote: > We have Text and ByteString as alternatives to String but as soon as > you want to do anything IO related (read a file, get a directory's > content, et cetera) it seems your only option is to use String. Maybe you are looking for the new versions of 'filepath' and 'directory' packages that use the OsString type from 'os-string'? From hilco.wijbenga at gmail.com Thu May 9 20:22:55 2024 From: hilco.wijbenga at gmail.com (Hilco Wijbenga) Date: Thu, 9 May 2024 13:22:55 -0700 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: Perfect! Yes, that's exactly what I'm looking for. Amazing that I completely missed that, it's not even that new. On Thu, May 9, 2024 at 1:01 PM Henning Thielemann wrote: > > > On Thu, 9 May 2024, Hilco Wijbenga wrote: > > > We have Text and ByteString as alternatives to String but as soon as > > you want to do anything IO related (read a file, get a directory's > > content, et cetera) it seems your only option is to use String. > > Maybe you are looking for the new versions of 'filepath' and 'directory' > packages that use the OsString type from 'os-string'? From byorgey at gmail.com Fri May 10 01:32:58 2024 From: byorgey at gmail.com (Brent Yorgey) Date: Thu, 9 May 2024 20:32:58 -0500 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: There is also e.g. the Data.Text.IO module from the text package, for doing file I/O and other such things with Text instead of String. -Brent On Thu, May 9, 2024 at 2:29 PM Hilco Wijbenga wrote: > Hi all, > > We have Text and ByteString as alternatives to String but as soon as > you want to do anything IO related (read a file, get a directory's > content, et cetera) it seems your only option is to use String. > > For an occasional IO action, this is obviously irrelevant but for a > compiler, a build system, or anything else that does a lot of IO this > seems like it would be(come) an issue. So I was wondering what would > be involved in adding (portable) support for System.IO with an > alternative to String (this alternative does not necessarily need to > be Text or ByteString). > > I did a little bit of research into how GHC handles this and there > appear to be several other String types in the GHC tree, including > ByteString(?). How feasible is an alternative System.IO API? How tied > to GHC would such an alternative need to be? To be clear, I am not > looking to _replace_ System.IO but to _add_ an alternative API (and > not a wrapper that maps to/from String). > > Please do not assume I necessarily know what I am talking about! > Especially, when it comes to the "portable" part. :-) > > Cheers, > Hilco > _______________________________________________ > 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 hilco.wijbenga at gmail.com Fri May 10 01:47:18 2024 From: hilco.wijbenga at gmail.com (Hilco Wijbenga) Date: Thu, 9 May 2024 18:47:18 -0700 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: Yes, thank you. I was aware of that but AFAICT, it still uses FilePath (i.e. String) and _that_ is what I want to avoid. On Thu, May 9, 2024 at 6:33 PM Brent Yorgey wrote: > > There is also e.g. the Data.Text.IO module from the text package, for doing file I/O and other such things with Text instead of String. > > -Brent > > > On Thu, May 9, 2024 at 2:29 PM Hilco Wijbenga wrote: >> >> Hi all, >> >> We have Text and ByteString as alternatives to String but as soon as >> you want to do anything IO related (read a file, get a directory's >> content, et cetera) it seems your only option is to use String. >> >> For an occasional IO action, this is obviously irrelevant but for a >> compiler, a build system, or anything else that does a lot of IO this >> seems like it would be(come) an issue. So I was wondering what would >> be involved in adding (portable) support for System.IO with an >> alternative to String (this alternative does not necessarily need to >> be Text or ByteString). >> >> I did a little bit of research into how GHC handles this and there >> appear to be several other String types in the GHC tree, including >> ByteString(?). How feasible is an alternative System.IO API? How tied >> to GHC would such an alternative need to be? To be clear, I am not >> looking to _replace_ System.IO but to _add_ an alternative API (and >> not a wrapper that maps to/from String). >> >> Please do not assume I necessarily know what I am talking about! >> Especially, when it comes to the "portable" part. :-) >> >> Cheers, >> Hilco >> _______________________________________________ >> 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 haskellcafe at dandart.co.uk Fri May 10 08:44:29 2024 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Fri, 10 May 2024 09:44:29 +0100 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: Do you instead want https://hackage.haskell.org/package/text-2.1.1/docs/Data-Text-IO.html ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From vamchale at gmail.com Fri May 10 15:57:14 2024 From: vamchale at gmail.com (Vanessa McHale) Date: Fri, 10 May 2024 11:57:14 -0400 Subject: [Haskell-cafe] [ANN] Jacinda 3.0.1.0, a functional AWK standin Message-ID: <8417e7ee-b480-4aff-b7c4-ecb6f89db153@gmail.com> Hello all, I recently rewrote the backend to Jacinda, a functional riff on AWK: https://hackage.haskell.org/package/jacinda See the github https://github.com/vmchale/jacinda/?tab=readme-ov-file#installation and also the guide https://vmchale.github.io/jacinda/ Cheers, Vanessa McHale From andrew.lelechenko at gmail.com Fri May 10 19:06:00 2024 From: andrew.lelechenko at gmail.com (Andrew Lelechenko) Date: Fri, 10 May 2024 20:06:00 +0100 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: FWIW in the modern setting it’s much better to use https://hackage.haskell.org/package/text-2.1.1/docs/Data-Text-IO-Utf8.html Best regards, Andrew > On 10 May 2024, at 09:44, Dan Dart wrote: > > Do you instead want https://hackage.haskell.org/package/text-2.1.1/docs/Data-Text-IO.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. -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrew.lelechenko at gmail.com Fri May 10 20:37:42 2024 From: andrew.lelechenko at gmail.com (Andrew Lelechenko) Date: Fri, 10 May 2024 21:37:42 +0100 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: References: Message-ID: <646A6AA7-C20B-4ED6-A28A-085443319215@gmail.com> See also a companion package https://hackage.haskell.org/package/file-io, which connects efficient and correct OsPath with ByteString-based readFile / writeFile. Best regards, Andrew > On 9 May 2024, at 21:22, Hilco Wijbenga wrote: > > Perfect! Yes, that's exactly what I'm looking for. Amazing that I > completely missed that, it's not even that new. > > On Thu, May 9, 2024 at 1:01 PM Henning Thielemann > wrote: >> >> >> On Thu, 9 May 2024, Hilco Wijbenga wrote: >> >>> We have Text and ByteString as alternatives to String but as soon as >>> you want to do anything IO related (read a file, get a directory's >>> content, et cetera) it seems your only option is to use String. >> >> Maybe you are looking for the new versions of 'filepath' and 'directory' >> packages that use the OsString type from 'os-string'? > _______________________________________________ > 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 hilco.wijbenga at gmail.com Fri May 10 22:23:05 2024 From: hilco.wijbenga at gmail.com (Hilco Wijbenga) Date: Fri, 10 May 2024 15:23:05 -0700 Subject: [Haskell-cafe] System.IO but not with Data.String? In-Reply-To: <646A6AA7-C20B-4ED6-A28A-085443319215@gmail.com> References: <646A6AA7-C20B-4ED6-A28A-085443319215@gmail.com> Message-ID: Ah, that looks very useful indeed, thank you. On Fri, May 10, 2024 at 1:37 PM Andrew Lelechenko wrote: > > See also a companion package https://hackage.haskell.org/package/file-io, which connects efficient and correct OsPath with ByteString-based readFile / writeFile. > > Best regards, > Andrew > > > On 9 May 2024, at 21:22, Hilco Wijbenga wrote: > > > > Perfect! Yes, that's exactly what I'm looking for. Amazing that I > > completely missed that, it's not even that new. > > > > On Thu, May 9, 2024 at 1:01 PM Henning Thielemann > > wrote: > >> > >> > >> On Thu, 9 May 2024, Hilco Wijbenga wrote: > >> > >>> We have Text and ByteString as alternatives to String but as soon as > >>> you want to do anything IO related (read a file, get a directory's > >>> content, et cetera) it seems your only option is to use String. > >> > >> Maybe you are looking for the new versions of 'filepath' and 'directory' > >> packages that use the OsString type from 'os-string'? > > _______________________________________________ > > 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 ben at well-typed.com Sat May 11 00:14:37 2024 From: ben at well-typed.com (Ben Gamari) Date: Fri, 10 May 2024 20:14:37 -0400 Subject: [Haskell-cafe] GHC 9.10.1 is now available Message-ID: <87msoxdx1x.fsf@smart-cactus.org> The GHC developers are very pleased to announce the release of GHC 9.10.1. Binary distributions, source distributions, and documentation are available at [downloads.haskell.org] and shortly via [GHCup]. GHC 9.10 brings a number of new features and improvements, including: * The introduction of the `GHC2024` language edition, building upon `GHC2021` with the addition of a number of widely-used extensions. * Partial implementation of the [GHC Proposal #281], allowing visible quantification to be used in the types of terms. * [Extension] of LinearTypes to allow linear `let` and `where` bindings * The implementation of the [exception backtrace proposal], allowing the annotation of exceptions with backtraces, as well as other user-defined context * Further improvements in the info table provenance mechanism, reducing code size to allow IPE information to be enabled more widely * Javascript FFI support in the WebAssembly backend * Improvements in the fragmentation characteristics of the low-latency non-moving garbage collector. * ... and many more A full accounting of changes can be found in the [release notes]. As always, GHC's release status, including planned future releases, can be found on the [GHC Wiki]. 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. As always, do give this release a try and open a [ticket] if you see anything amiss. [release notes]: https://downloads.haskell.org/ghc/9.10.1/docs/users_guide/9.10.1-notes.html [GHC Wiki]: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status [exception backtrace]: https://github.com/ghc-proposals/ghc-proposals/pull/330 [GHC Proposal #281]: https://github.com/ghc-proposals/ghc-proposals/pull/281 [linear let]: https://github.com/ghc-proposals/ghc-proposals/pull/624 [downloads.haskell.org]: https://downloads.haskell.org/ghc/9.10.1 [ticket]: https://gitlab.haskell.org/ghc/ghc/-/issues/new [GHCup]: https://www.haskell.org/ghcup/ -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 487 bytes Desc: not available URL: From mmcconnell17704 at yahoo.com Sun May 12 19:41:37 2024 From: mmcconnell17704 at yahoo.com (Mark McConnell) Date: Sun, 12 May 2024 19:41:37 +0000 (UTC) Subject: [Haskell-cafe] Preferred syntax for append References: <1244981605.892396.1715542897959.ref@mail.yahoo.com> Message-ID: <1244981605.892396.1715542897959@mail.yahoo.com> We know that lists have map.  Sometimes we want to take the higher perspective of Functor, replacing map with fmap, then replacing fmap with <$> .  This post asks the corresponding question about append. The notation for append within List itself is ++ .  Often we think of lists as Monads.  Applicative generalizes Monad, and Alternative specializes Applicative.  Alternative has <|> which behaves as ++ on List.  I have been using <|> for this purpose. Recently, I have begun to read and enjoy "Effective Haskell".  In Chapter 1, this book uses <> for append.  Clearly they are thinking of List as a Semigroup. I'm curious about your thoughts on ++ versus <|> versus <> . -------------- next part -------------- An HTML attachment was scrubbed... URL: From hecate at glitchbra.in Mon May 13 07:05:03 2024 From: hecate at glitchbra.in (=?UTF-8?Q?H=C3=A9cate?=) Date: Mon, 13 May 2024 09:05:03 +0200 Subject: [Haskell-cafe] Preferred syntax for append In-Reply-To: <1244981605.892396.1715542897959@mail.yahoo.com> References: <1244981605.892396.1715542897959.ref@mail.yahoo.com> <1244981605.892396.1715542897959@mail.yahoo.com> Message-ID: Hi Mark, Yes I would favour Rebecca's approach in her book to use Semigroup. Personally I never think of lists as Monads, as I see this instance useful only to power list comprehension. Concatenation with (<>) is more meaningful and holds better semantics than (<|>), described as just "An associative binary operation".  It's so vague it could be the documentation for a Magma typeclass, and the name "Alternative" is quite loaded (we think especially of parsers when thinking/seeing Alternative). Cheers, Hécate Le 12/05/2024 à 21:41, Mark McConnell via Haskell-Cafe a écrit : > We know that lists have map.  Sometimes we want to take the higher > perspective of Functor, replacing map with fmap, then replacing fmap > with <$> .  This post asks the corresponding question about append. > > The notation for append within List itself is ++ .  Often we think of > lists as Monads.  Applicative generalizes Monad, and Alternative > specializes Applicative.  Alternative has <|> which behaves as ++ on > List.  I have been using <|> for this purpose. > > Recently, I have begun to read and enjoy "Effective Haskell".  In > Chapter 1, this book uses <> for append.  Clearly they are thinking of > List as a Semigroup. > > I'm curious about your thoughts on ++ versus <|> versus <> . > > _______________________________________________ > 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. -- Hécate ✨ 🐦: @TechnoEmpress IRC: Hecate WWW:https://glitchbra.in RUN: BSD -------------- next part -------------- An HTML attachment was scrubbed... URL: From ben.franksen at online.de Mon May 13 08:15:35 2024 From: ben.franksen at online.de (Ben Franksen) Date: Mon, 13 May 2024 10:15:35 +0200 Subject: [Haskell-cafe] tls transition from 1.9 to 2.0 Message-ID: Hi everyone from 1.9.x to 2.0.x the tls package made a change to require EMS (extended main secret) by default. I must admit that I have no idea what this is about and I don't really care much. However, it turns out that for compatibility reasons I need to change it to the old behavior (which allowed but did not require it). So I wonder how to do that. The problem is that I am not using tls directly but only via http-conduit (we only need the http client side functionality and mostly for simple download of files). Any hints would be greatly appreciated. Cheers Ben -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From olf at aatal-apotheke.de Mon May 13 17:12:47 2024 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Mon, 13 May 2024 19:12:47 +0200 Subject: [Haskell-cafe] Preferred syntax for append Message-ID: <451633ddd78e2f9e6f4e6441b9bcabe578b5d172.camel@aatal-apotheke.de> > Concatenation with (<>) is more meaningful and holds better semantics > than (<|>), described as just "An associative binary operation". (<>) is also "just an associative binary operation", no more guarantees than (<|>). That said, for append (<>) should be preferred over (<|>) because one can then switch to more efficient append implementations just by changing the type signature, e.g. when switching from String to Text: The former is an Alternative, the latter ist not. (<|>) for list models non-deterministic choice, which can be useful in combinatorial problems. Olaf From mmcconnell17704 at yahoo.com Tue May 14 17:59:30 2024 From: mmcconnell17704 at yahoo.com (Mark McConnell) Date: Tue, 14 May 2024 17:59:30 +0000 (UTC) Subject: [Haskell-cafe] Preferred syntax for append In-Reply-To: References: <1244981605.892396.1715542897959.ref@mail.yahoo.com> <1244981605.892396.1715542897959@mail.yahoo.com> Message-ID: <670636703.13882.1715709570238@mail.yahoo.com> Thanks to all who replied.   I will be changing <|> to <> . On Monday, May 13, 2024 at 03:05:48 AM EDT, Hécate via Haskell-Cafe wrote: Hi Mark, Yes I would favour Rebecca's approach in her book to use Semigroup. Personally I never think of lists as Monads, as I see this instance useful only to power list comprehension.  Concatenation with (<>) is more meaningful and holds better semantics than (<|>), described as just "An associative binary operation".  It's so vague it could be the documentation for a Magma typeclass, and the name "Alternative" is quite loaded (we think especially of parsers when thinking/seeing Alternative). Cheers, Hécate Le 12/05/2024 à 21:41, Mark McConnell via Haskell-Cafe a écrit : We know that lists have map.  Sometimes we want to take the higher perspective of Functor, replacing map with fmap, then replacing fmap with <$> .  This post asks the corresponding question about append. The notation for append within List itself is ++ .  Often we think of lists as Monads.  Applicative generalizes Monad, and Alternative specializes Applicative.  Alternative has <|> which behaves as ++ on List.  I have been using <|> for this purpose. Recently, I have begun to read and enjoy "Effective Haskell".  In Chapter 1, this book uses <> for append.  Clearly they are thinking of List as a Semigroup. I'm curious about your thoughts on ++ versus <|> versus <> . _______________________________________________ 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. -- Hécate ✨ 🐦: @TechnoEmpress IRC: Hecate WWW: https://glitchbra.in RUN: BSD _______________________________________________ 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 frank at systemf.dev Tue May 14 18:53:10 2024 From: frank at systemf.dev (Frank Dedden) Date: Tue, 14 May 2024 20:53:10 +0200 Subject: [Haskell-cafe] [ANN] Copilot 3.19.1 Message-ID: Hi everyone! We are very excited to announce Copilot 3.19.1 [1,2]. Copilot is a stream-based EDSL in Haskell for writing and monitoring embedded C programs, with an emphasis on correctness and hard realtime requirements. Copilot is typically used as a high-level runtime verification framework, and supports temporal logic (LTL, PTLTL and MTL), clocks and voting algorithms. Copilot marked as NASA Class D open-source software, and is being used at NASA in drone test flights. Through the NASA tool Ogma [3] (also written in Haskell), Copilot also serves as a runtime monitoring backend for NASA's Core Flight System, Robot Operating System (ROS2), and FPrime (the software framework used in the Mars Helicopter). This release does not contain any API breaking changes, but consists of some improvements to the copilot-theorem package. Thanks to Ryan Scott (Galois Inc.) a problem related to the interface with the Kind 2 model checker is fixed. Additionally, improvements have been made to the documentation. As always, we're releasing exactly 2 months since the last release. Our next release is scheduled for July 7th, 2024. Current emphasis is on improving the codebase in terms of stability and test coverage, removing unnecessary dependencies, hiding internal definitions, and formatting the code to meet our new coding standards. Additionally, as an ongoing process, work is being done on making Copilot more accessible to people less familiar with Haskell. Users are encouraged to participate by opening issues and asking questions via our github repo [4]. Happy Haskelling! Frank Dedden [1] https://github.com/Copilot-Language/copilot/releases/tag/v3.19.1 [2] https://hackage.haskell.org/package/copilot [3] https://github.com/nasa/ogma [4] https://github.com/Copilot-Language/copilot From jkarni at gmail.com Tue May 14 21:53:37 2024 From: jkarni at gmail.com (Julian Arni) Date: Tue, 14 May 2024 23:53:37 +0200 Subject: [Haskell-cafe] cradle: a simpler process library Message-ID: Hi all, We just released cradle, a library aimed at a being simpler and more intuitive subprocess library. More details in: - The announcement: https://garnix.io/blog/announcing-cradle - The hackage page: https://hackage.haskell.org/package/cradle-0.0.0.0/docs/Cradle.html Feedback welcome! Cheers, Julian -------------- next part -------------- An HTML attachment was scrubbed... URL: From isaace71295 at gmail.com Wed May 15 03:28:53 2024 From: isaace71295 at gmail.com (Isaac Elliott) Date: Wed, 15 May 2024 13:28:53 +1000 Subject: [Haskell-cafe] cradle: a simpler process library In-Reply-To: References: Message-ID: Nice. I first saw this style of polymorphic command output in Shake.Command[1]. I'm surprised that `cmd` doesn't take an argument list, given how common it is to pass command args. I think it should; I'm willing to type `cmd "ls" []` so that `cmd "ls" ["-l"]` is shorter. [1]: https://hackage.haskell.org/package/shake-0.19.8/docs/Development-Shake-Command.html On Wed, 15 May 2024, 07:54 Julian Arni, wrote: > Hi all, > > We just released cradle, a library aimed at a being simpler and more > intuitive subprocess library. More details in: > > - The announcement: https://garnix.io/blog/announcing-cradle > - The hackage page: > https://hackage.haskell.org/package/cradle-0.0.0.0/docs/Cradle.html > > Feedback welcome! > > Cheers, > Julian > _______________________________________________ > 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 jkarni at gmail.com Wed May 15 13:07:04 2024 From: jkarni at gmail.com (Julian Arni) Date: Wed, 15 May 2024 15:07:04 +0200 Subject: [Haskell-cafe] cradle: a simpler process library In-Reply-To: References: Message-ID: Yeah, maybe it would have been nicer to do it that way. Re: shake's cmd. Yes, that's exactly the inspiration. We removed the polymorphism and varags aspect of the *arguments* (but kept it for the *outputs*) because it felt like it complicated signatures, type inference, and documentation for no real gain. But at the start "cradle" was almost just a pure separation of shake's cmd into a new package. On Wed, May 15, 2024 at 5:29 AM Isaac Elliott wrote: > Nice. I first saw this style of polymorphic command output in > Shake.Command[1]. > > I'm surprised that `cmd` doesn't take an argument list, given how common > it is to pass command args. I think it should; I'm willing to type `cmd > "ls" []` so that `cmd "ls" ["-l"]` is shorter. > > [1]: > https://hackage.haskell.org/package/shake-0.19.8/docs/Development-Shake-Command.html > > On Wed, 15 May 2024, 07:54 Julian Arni, wrote: > >> Hi all, >> >> We just released cradle, a library aimed at a being simpler and more >> intuitive subprocess library. More details in: >> >> - The announcement: https://garnix.io/blog/announcing-cradle >> - The hackage page: >> https://hackage.haskell.org/package/cradle-0.0.0.0/docs/Cradle.html >> >> Feedback welcome! >> >> Cheers, >> Julian >> _______________________________________________ >> 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 george.colpitts at gmail.com Fri May 17 21:37:49 2024 From: george.colpitts at gmail.com (George Colpitts) Date: Fri, 17 May 2024 18:37:49 -0300 Subject: [Haskell-cafe] problems with trace Message-ID: After I load the following into ghci and call main I expect to see "norm" in the output 3 times as I have called it 3 times but it only shows once. Why? traceBug.hs --------------- {-# OPTIONS_GHC -Wall #-} import Debug.Trace (trace) norm :: [Int] -> [Int] norm = trace ("norm") id main :: IO () main = do print $ norm [2] print $ norm [2] print $ norm [3] --------------------- ghci session % ghci traceBug.hs Loaded package environment from /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default GHCi, version 9.8.2: https://www.haskell.org/ghc/ :? for help [1 of 2] Compiling Main ( traceBug.hs, interpreted ) Ok, one module loaded. ghci> main norm [2] [2] [3] ghci> -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Fri May 17 21:43:10 2024 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Fri, 17 May 2024 23:43:10 +0200 (CEST) Subject: [Haskell-cafe] problems with trace In-Reply-To: References: Message-ID: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> On Fri, 17 May 2024, George Colpitts wrote: > After I load the following into ghci and call main I expect to see "norm" in the output 3 times as I have called it 3 times > but it only shows once. Why? > > traceBug.hs > --------------- > {-# OPTIONS_GHC -Wall #-} > > import Debug.Trace (trace) > > norm :: [Int] -> [Int] > norm  = trace ("norm") id > > main :: IO () > main = >   do >     print $ norm [2] >     print $ norm [2] >     print $ norm [3] > --------------------- > > ghci session > > % ghci traceBug.hs > Loaded package environment from /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default > GHCi, version 9.8.2: https://www.haskell.org/ghc/  :? for help > [1 of 2] Compiling Main             ( traceBug.hs, interpreted ) > Ok, one module loaded. > ghci> main > norm > [2] > [2] > [3] I think this is correct. 'norm' is evaluated only once, because it is the same variable (for a function) in every call. It would be different, if you would define: norm xs = trace "norm" xs From george.colpitts at gmail.com Fri May 17 23:26:44 2024 From: george.colpitts at gmail.com (George Colpitts) Date: Fri, 17 May 2024 20:26:44 -0300 Subject: [Haskell-cafe] problems with trace In-Reply-To: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> References: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> Message-ID: Thanks Henning! I suspected some kind of optimization but I didn't think ghci would do any. I guess it is just a subtle consequence of eta reduction. It was very confusing to me. Cheers George On Fri, May 17, 2024 at 6:43 PM Henning Thielemann < lemming at henning-thielemann.de> wrote: > > On Fri, 17 May 2024, George Colpitts wrote: > > > After I load the following into ghci and call main I expect to see > "norm" in the output 3 times as I have called it 3 times > > but it only shows once. Why? > > > > traceBug.hs > > --------------- > > {-# OPTIONS_GHC -Wall #-} > > > > import Debug.Trace (trace) > > > > norm :: [Int] -> [Int] > > norm = trace ("norm") id > > > > main :: IO () > > main = > > do > > print $ norm [2] > > print $ norm [2] > > print $ norm [3] > > --------------------- > > > > ghci session > > > > % ghci traceBug.hs > > Loaded package environment from > /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default > > GHCi, version 9.8.2: https://www.haskell.org/ghc/ :? for help > > [1 of 2] Compiling Main ( traceBug.hs, interpreted ) > > Ok, one module loaded. > > ghci> main > > norm > > [2] > > [2] > > [3] > > > I think this is correct. 'norm' is evaluated only once, because it is the > same variable (for a function) in every call. It would be different, if > you would define: > > norm xs = trace "norm" xs -------------- next part -------------- An HTML attachment was scrubbed... URL: From allbery.b at gmail.com Fri May 17 23:31:39 2024 From: allbery.b at gmail.com (Brandon Allbery) Date: Fri, 17 May 2024 19:31:39 -0400 Subject: [Haskell-cafe] problems with trace In-Reply-To: References: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> Message-ID: It's a consequence of lazy evaluation. Which means `trace` is very useful to see when things are actually evaluated, but not useful as a general output mechanism. On Fri, May 17, 2024 at 7:27 PM George Colpitts wrote: > Thanks Henning! I suspected some kind of optimization but I didn't think > ghci would do any. I guess it is just a subtle consequence of eta > reduction. It was very confusing to me. > > Cheers > George > > > On Fri, May 17, 2024 at 6:43 PM Henning Thielemann < > lemming at henning-thielemann.de> wrote: > >> >> On Fri, 17 May 2024, George Colpitts wrote: >> >> > After I load the following into ghci and call main I expect to see >> "norm" in the output 3 times as I have called it 3 times >> > but it only shows once. Why? >> > >> > traceBug.hs >> > --------------- >> > {-# OPTIONS_GHC -Wall #-} >> > >> > import Debug.Trace (trace) >> > >> > norm :: [Int] -> [Int] >> > norm = trace ("norm") id >> > >> > main :: IO () >> > main = >> > do >> > print $ norm [2] >> > print $ norm [2] >> > print $ norm [3] >> > --------------------- >> > >> > ghci session >> > >> > % ghci traceBug.hs >> > Loaded package environment from >> /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default >> > GHCi, version 9.8.2: https://www.haskell.org/ghc/ :? for help >> > [1 of 2] Compiling Main ( traceBug.hs, interpreted ) >> > Ok, one module loaded. >> > ghci> main >> > norm >> > [2] >> > [2] >> > [3] >> >> >> I think this is correct. 'norm' is evaluated only once, because it is the >> same variable (for a function) in every call. It would be different, if >> you would define: >> >> norm xs = trace "norm" xs > > _______________________________________________ > 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 tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk Sat May 18 06:43:23 2024 From: tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk (Tom Ellis) Date: Sat, 18 May 2024 07:43:23 +0100 Subject: [Haskell-cafe] problems with trace In-Reply-To: References: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> Message-ID: I don't think optimization plays any role. At the start of the program 'norm' is a thunk which points to the code 'trace "norm" id'. The first time it is evaluated the 'trace' prints "norm" and 'norm' becomes bound to the value 'id'. On Fri, May 17, 2024 at 08:26:44PM -0300, George Colpitts wrote: > Thanks Henning! I suspected some kind of optimization but I didn't think > ghci would do any. I guess it is just a subtle consequence of eta > reduction. It was very confusing to me. > > On Fri, May 17, 2024 at 6:43 PM Henning Thielemann < > lemming at henning-thielemann.de> wrote: > > > > > On Fri, 17 May 2024, George Colpitts wrote: > > > > > After I load the following into ghci and call main I expect to see > > "norm" in the output 3 times as I have called it 3 times > > > but it only shows once. Why? > > > > > > traceBug.hs > > > --------------- > > > {-# OPTIONS_GHC -Wall #-} > > > > > > import Debug.Trace (trace) > > > > > > norm :: [Int] -> [Int] > > > norm = trace ("norm") id > > > > > > main :: IO () > > > main = > > > do > > > print $ norm [2] > > > print $ norm [2] > > > print $ norm [3] > > > --------------------- > > > > > > ghci session > > > > > > % ghci traceBug.hs > > > Loaded package environment from > > /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default > > > GHCi, version 9.8.2: https://www.haskell.org/ghc/ :? for help > > > [1 of 2] Compiling Main ( traceBug.hs, interpreted ) > > > Ok, one module loaded. > > > ghci> main > > > norm > > > [2] > > > [2] > > > [3] > > > > > > I think this is correct. 'norm' is evaluated only once, because it is the > > same variable (for a function) in every call. It would be different, if > > you would define: > > > > norm xs = trace "norm" xs From george.colpitts at gmail.com Sat May 18 11:09:58 2024 From: george.colpitts at gmail.com (George Colpitts) Date: Sat, 18 May 2024 08:09:58 -0300 Subject: [Haskell-cafe] problems with trace In-Reply-To: References: <6d607414-8314-86b8-3489-21bf427c2138@henning-thielemann.de> Message-ID: Agreed! Thanks On Sat, May 18, 2024 at 3:43 AM Tom Ellis < tom-lists-haskell-cafe-2023 at jaguarpaw.co.uk> wrote: > I don't think optimization plays any role. At the start of the > program 'norm' is a thunk which points to the code 'trace "norm" id'. > The first time it is evaluated the 'trace' prints "norm" and 'norm' > becomes bound to the value 'id'. > > On Fri, May 17, 2024 at 08:26:44PM -0300, George Colpitts wrote: > > Thanks Henning! I suspected some kind of optimization but I didn't think > > ghci would do any. I guess it is just a subtle consequence of eta > > reduction. It was very confusing to me. > > > > On Fri, May 17, 2024 at 6:43 PM Henning Thielemann < > > lemming at henning-thielemann.de> wrote: > > > > > > > > On Fri, 17 May 2024, George Colpitts wrote: > > > > > > > After I load the following into ghci and call main I expect to see > > > "norm" in the output 3 times as I have called it 3 times > > > > but it only shows once. Why? > > > > > > > > traceBug.hs > > > > --------------- > > > > {-# OPTIONS_GHC -Wall #-} > > > > > > > > import Debug.Trace (trace) > > > > > > > > norm :: [Int] -> [Int] > > > > norm = trace ("norm") id > > > > > > > > main :: IO () > > > > main = > > > > do > > > > print $ norm [2] > > > > print $ norm [2] > > > > print $ norm [3] > > > > --------------------- > > > > > > > > ghci session > > > > > > > > % ghci traceBug.hs > > > > Loaded package environment from > > > /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default > > > > GHCi, version 9.8.2: https://www.haskell.org/ghc/ :? for help > > > > [1 of 2] Compiling Main ( traceBug.hs, interpreted ) > > > > Ok, one module loaded. > > > > ghci> main > > > > norm > > > > [2] > > > > [2] > > > > [3] > > > > > > > > > I think this is correct. 'norm' is evaluated only once, because it is > the > > > same variable (for a function) in every call. It would be different, if > > > you would define: > > > > > > norm xs = trace "norm" xs > _______________________________________________ > 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 ben.franksen at online.de Sun May 19 14:29:09 2024 From: ben.franksen at online.de (Ben Franksen) Date: Sun, 19 May 2024 16:29:09 +0200 Subject: [Haskell-cafe] tls transition from 1.9 to 2.0 In-Reply-To: References: Message-ID: Am 13.05.24 um 10:15 schrieb Ben Franksen: > Hi everyone > > from 1.9.x to 2.0.x the tls package made a change to require EMS > (extended main secret) by default. I must admit that I have no idea what > this is about and I don't really care much. However, it turns out that > for compatibility reasons I need to change it to the old behavior (which > allowed but did not require it). So I wonder how to do that. > > The problem is that I am not using tls directly but only via > http-conduit (we only need the http client side functionality and mostly > for simple download of files). Any hints would be greatly appreciated. Update: problem solved. Author of crypton-connection kindly accepted a PR that allows to override the default value for TLS.ClientSupported even in cases where generic connection manager (e.g. http-client-tls) is used. -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From xnningxie at gmail.com Mon May 20 16:04:07 2024 From: xnningxie at gmail.com (Ningning Xie) Date: Mon, 20 May 2024 12:04:07 -0400 Subject: [Haskell-cafe] POPL 2025: First Call for Papers (deadline: July 11 AOE) Message-ID: Dear all, Please find below the Call for Papers for the POPL 2025 conference. We would be grateful if you could help distribute this call among your networks. Many thanks! Ningning Xie POPL 2025 Publicity Chair PACMPL Issue POPL 2025 seeks contributions on all aspects of programming languages and programming systems, both theoretical and practical. Authors of papers published in PACMPL Issue POPL 2025 will be invited to present their work in the POPL conference in January 2025, which is sponsored by ACM SIGPLAN, in cooperation with ACM SIGACT and ACM SIGLOG. POPL 2025 Website: https://conf.researchr.org/home/POPL-2025 Call for Papers: https://conf.researchr.org/track/POPL-2025/POPL-2025-popl-research-papers#POPL-2025-Call-for-Papers Double-Blind Review FAQ: https://conf.researchr.org/track/POPL-2025/POPL-2025-popl-research-papers#FAQ-on-Double-Blind-Reviewing ### Organization Conference Location: Denver, Colorado, United States Conference Dates: January 19-25, 2025 General Chair: Steve Zdancewic, University of Pennsylvania Program Chair: Armando Solar-Lezama, MIT Program Committee: https://conf.researchr.org/committee/POPL-2025/POPL-2025-popl-research-papers-program-committee ### Important Dates All the times/deadlines below are Anywhere on Earth (AoE) in 2024. Submission deadline: July 11 ### Scope Principles of Programming Languages (POPL) is a forum for the discussion of all aspects of programming languages and programming systems. Both theoretical and experimental papers are welcome, on topics ranging from formal frameworks to experience reports. We seek submissions that make principled, enduring contributions to the theory, design, understanding, implementation, or application of programming languages. ### Evaluation Criteria The Review Committee will evaluate the technical contribution of each submission as well as its accessibility to both experts and the general POPL audience. All papers will be judged on significance, originality, relevance, correctness, and clarity. Each paper must explain its scientific contribution in both general and technical terms, identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. Advice on writing technical papers can be found on the SIGPLAN author information page: https://www.sigplan.org/Resources/Author/. Deadlines and formatting requirements, detailed below, will be strictly enforced. ### Double-Blind Reviewing Process POPL 2025 will use a full double-blind reviewing process (similar to the one used for POPL 2023 and 2024 but different from the lightweight double-blind process used in previous years). This means that identities of authors will not be made visible to reviewers until after conditional-acceptance decisions have been made, and then only for the conditionally-accepted papers. The use of full double-blind reviewing has several consequences for authors. * **Submissions**: Authors must omit their names and institutions from their paper submissions. In addition, references to authors’ own prior work should be in the third person (e.g., not “We build on our previous work …” but rather “We build on the work of …”). * **Supplementary material**: Authors are permitted to provide supplementary material (e.g., detailed proofs, proof scripts, system implementations, or experimental data) along with their submission, which reviewers may (but are not required to) examine. This material may take the form of a single file, such as a PDF or a tarball. Authors must fully anonymize any supplementary material. * **Author response**: In responding to reviews, authors should not say anything that reveals their identity, since author identities will not be revealed to reviewers at that stage of the reviewing process. * **Dissemination of work under submission**: Authors are welcome to disseminate their ideas and post draft versions of their paper(s) on their personal website, institutional repository, or arXiv (reviewers will be asked to turn off arXiv notifications during the review period). But authors should not take steps that would almost certainly reveal their identities to members of the Program Committee, e.g., directly contacting PC members or publicizing the work on widely-visible social media or major mailing lists used by the community. The purpose of the above restrictions is to help the Program Committee and external reviewers come to a judgment about the paper without bias, not to make it impossible for them to discover the authors’ identities if they were to try. In particular, nothing should be done in the name of anonymity that weakens the quality of the submission. However, there are occasionally cases where adhering to the above restrictions is truly difficult or impossible for one reason or another. In such cases, the authors should contact the Program Chair to discuss the situation and how to handle it. The FAQ on Double-Blind Reviewing addresses many common scenarios and answers many common questions about this topic. But there remain many grey areas and trade-offs. If you have any doubts about how to interpret the double-blind rules or you encounter a complex case that is not clearly covered by the FAQ, please contact the Program Chair for guidance. ### Evaluation Process Like last year, POPL 2025 will use a double-blind reviewing process (instead of the lightweight double-blind process used in recent years). This means that identities of authors will not be visible to reviewers until after conditional-acceptance decisions have been made. For authors, the main change is that there is no option to upload non-anonymized supplementary material; only anonymized supplementary material may be submitted. POPL 2025 will have five Associate Chairs who will help the PC Chair monitor reviews, solicit external expert reviews for submissions when there is not enough expertise on the committee, and facilitate reviewer discussions. As in previous years, authors will have a multi-day period to respond to reviews, as indicated in the Important Dates table. Responses are optional. A response must be concise, addressing specific points raised in the reviews; in particular, it must not introduce new technical results. Reviewers will write a short reaction to these author responses. The Review Committee (RC) will discuss papers electronically, and will use synchronous virtual meetings to discuss any papers for which there is disagreement among reviewers, in some cases soliciting additional input from other experts in the committee. There is no formal External Review Committee, though experts outside the committee may be consulted for some papers. Reviews will be accompanied by a short summary of the reasons behind the committee’s decision with the goal of clarifying the reasons behind the decision. To conform with ACM requirements for journal publication, all POPL papers will be conditionally accepted; authors will be required to submit a short description of the changes made to the final version of the paper, including how the changes address any requirements imposed by the Review Committee. That the changes are sufficient will be confirmed by the original reviewers prior to acceptance to POPL. Authors of conditionally accepted papers must submit a satisfactory revision to the Review Committee by the requested deadline or risk rejection. For additional information about the reviewing process, see: [Principles of POPL](https://www.sigplan.org/Conferences/POPL/Principles/), a presentation of the underlying organizational and reviewing policies for POPL. For POPL 2025, policies specified in this Call for Papers supersede those in the Principles of POPL document. ### Submission Site Information The submission site is https://popl25.hotcrp.com. Authors can submit multiple times prior to the deadline. Only the last submission will be reviewed. There is no abstract deadline. The submission site requires entering author names and affiliations, relevant topics, and potential conflicts. Addition or removal of authors after the submission deadline will need to be approved by the Program Chair (as this kind of change potentially undermines the goal of eliminating conflicts during paper assignment). The submission deadline is 11:59PM July 11, 2024 anywhere on earth: https://en.wikipedia.org/wiki/Anywhere_on_Earth ### Conflicts of Interest For each submission, the authors must make sure that they properly declare all potential conflicts of interest for all of the authors of that submission. This includes marking PC conflicts as well as “Other Conflicts (external)”. A conflict caught late in the reviewing process leads to a voided review which may be infeasible to replace. Conflicts should be declared between an adviser and an advisee (e.g., Ph.D., post-doc; forever), between an author and a co-author (papers and proposals; for two years), between people at the same institution (branches of large companies or different locations of research institutes are considered to be the same institution; for two years after leaving an institution), between people with financial conflicts of interest, and between friends or relatives. Please do not declare spurious conflicts: such incorrect conflicts are especially harmful if the aim is to exclude potential reviewers, so spurious conflicts can be grounds for rejection. If you are unsure about a conflict, please consult the Program Chair. ### Submission Guidelines Prior to the paper submission deadline, authors should upload their full anonymized paper. Here are some key requirements concerning paper submissions: * Each paper should have no more than **25 pages of text, excluding bibliography**, using the PACMPL format (specifically, the `acmart` LaTeX class with `acmsmall` option). It is a single-column page layout with a 10 pt font, 12 pt line spacing, and wider margins than recent POPL page layouts. In this format, the main text block is 5.478 in (13.91 cm) wide and 7.884 in (20.03 cm) tall. Use of a different format (e.g., smaller fonts or a larger text block) is grounds for summary rejection. The PACMPL template for LaTeX can be found at the [SIGPLAN author information page]( https://www.sigplan.org/Resources/Author/), and further information about PACMPL submissions can be found on the [PACMPL author guidelines page]( https://dl.acm.org/journal/pacmpl/author-guidelines). PACMPL does not support submissions in Microsoft Word. * We strongly encourage use of the `review` and `screen` options in order to make submissions easier to review. * (**NEW this year**) Authors may choose which citation format they wish to use, which can be either author-year (the mandate for final versions in previous years) or numeric. * Submissions should be in PDF and printable on both US Letter and A4 paper. Papers may be resubmitted to the submission site multiple times up until the deadline, but the last version submitted before the deadline will be the version reviewed. * Submitted papers must adhere to the [SIGPLAN Republication Policy]( https://www.sigplan.org/Resources/Policies/Republication/) and the [ACM Policy on Plagiarism]( https://www.acm.org/publications/policies/plagiarism-overview). Concurrent paper submissions to other conferences, workshops, journals, or similar forums of publication are not allowed. * Authors are free to submit supplementary material along with their submissions, but it must be fully anonymized. * Authors must list all their conflicts of interest (both PC conflicts and external conflicts) in the HotCRP submission form. * Authors may include additional information in a field of the HotCRP submission form labeled "Confidential Comments for the Program Chair". This information need not be anonymized. It can be used to inform the Program Chair, for example, about sensitive issues concerning a conflict with a PC member or about supplementary material that cannot be anonymized. It is left to the discretion of the Program Chair what to do with this information. * If for some reason an author feels uncomfortable discussing a sensitive issue with the Program Chair (or communicating via the "Confidential Comments" field in HotCRP), they should feel free to get in touch instead with any of the Associate Chairs, with whom they can discuss the issue in confidence. * Submissions from PC members (except the Program Chair) are permitted and will not be handled any differently than other submissions. This is in accordance with a recent change in policy approved by the SIGPLAN Executive Committee: SIGPLAN conferences that use full double-blind review and whose PCs have at least 50 members need not hold PC submissions to a higher standard. ### Artifact Evaluation for Accepted Papers Authors of conditionally accepted papers will be invited to formally submit supporting materials to the Artifact Evaluation process. Artifact Evaluation is run by a separate committee whose task is to assess how the artifacts support the work described in the papers. Artifact submission is strongly encouraged but voluntary and will not influence the final decision regarding the papers. Papers that go through the Artifact Evaluation process successfully will receive a seal of approval printed on the papers themselves. Authors of accepted papers are encouraged to make these materials publicly available upon publication of the proceedings, by including them as “source materials” in the ACM Digital Library. ### Copyright, Publication, and Presentation As a Gold Open Access journal, PACMPL is committed to making peer-reviewed scientific research free of restrictions on both access and (re-)use. Authors are strongly encouraged to support libre open access by licensing their work with the [Creative Commons Attribution 4.0 International (CC BY) license](https://creativecommons.org/licenses/by/4.0/), which grants readers liberal (re-)use rights. Authors of accepted papers will be required to choose one of the following publication rights: * Author licenses the work with a [Creative Commons license]( https://creativecommons.org/), retains copyright, and (implicitly) grants ACM non-exclusive permission to publish (suggested choice). * Author retains copyright of the work and grants ACM a non-exclusive permission to publish license. * Author retains copyright of the work and grants ACM an exclusive permission to publish license. * Author transfers copyright of the work to ACM. These choices follow from ACM Copyright Policy and ACM Author Rights, corresponding to ACM's "author pays" option. While PACMPL may ask authors who have funding for open-access fees to voluntarily cover the article processing charge (currently, US$400), payment is not required for publication. PACMPL and SIGPLAN continue to explore the best models for funding open access, focusing on approaches that are sustainable in the long-term while reducing short-term risk. All papers will be archived by the ACM Digital Library. Authors will have the option of including supplementary material with their paper. The official publication date is the date the proceedings are made available in the ACM Digital Library. This date may be up to two weeks prior to the first day of the conference. The official publication date affects the deadline for any patent filings related to published work. Authors of accepted papers are required to give a short talk (roughly 25 minutes long) at the conference, according to the conference schedule. However, authors who cannot attend in person will be provided with some option for remote presentation, as well as some mechanism for remote interaction with conference participants. ### Distinguished Paper Awards At most 10% of the accepted papers of POPL 2025 will be designated as Distinguished Papers. This award highlights papers that the Review Committee thinks should be read by a broad audience due to their relevance, originality, significance, and clarity. The selection of the distinguished papers will be made based on the final version of the paper and through an additional review process. -------------- next part -------------- An HTML attachment was scrubbed... URL: From zubin at well-typed.com Tue May 21 15:48:49 2024 From: zubin at well-typed.com (Zubin Duggal) Date: Tue, 21 May 2024 21:18:49 +0530 Subject: [Haskell-cafe] Priorities for upcoming GHC releases Message-ID: Hi all, We detail our plans for upcoming GHC releases in a new blog post: https://www.haskell.org/ghc/blog/20240521-ghc-release-priorities.html The summary is that we will prioritise work on the 9.10, 9.6 and master branches over work on the 9.8 branch for the coming few months due to time and resource constraints. This does not mean that we are dropping support for GHC 9.8, but that releases in this series might be made at a slower pace than usual. Cheers, Zubin. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: From liyao at pdx.edu Tue May 21 19:49:34 2024 From: liyao at pdx.edu (Yao Li) Date: Tue, 21 May 2024 12:49:34 -0700 Subject: [Haskell-cafe] PLMW@PLDI 2024: Call for Lightning Talks on Research Group Openings Message-ID: Hi All. If you are attending PLDI this year, this might be of interest to you. We are experimenting with new ways of networking at PLMW at PLDI’24 through "Lightning talks on research group openings". If you have (or anticipate) an open position, either in academia or industry, full-time or part-time—you can now leverage PLMW to advertise that position. The definition of the opening is to be interpreted broadly. Towards this end, we would like to invite lightning talks describing the opportunities in your groups. At this point, we expect the talk to be anywhere between 5 to 10mins. Depending on the space, we may tighten the time to just 5mins closer to the program. Please fill this form by *June 5th* if you are interested. Note that the talks are in-person. The event is on *June 24, 2024*. You can check out https://pldi24.sigplan.org/track/PLMW-PLDI-2024 for more details on the PLMW program. Anitha Gollamudi Univ. of Massachusetts Lowell. https://sites.uml.edu/anitha-gollamudi/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From lc985 at cam.ac.uk Wed May 22 12:56:19 2024 From: lc985 at cam.ac.uk (Luisa Cicolini) Date: Wed, 22 May 2024 12:56:19 +0000 Subject: [Haskell-cafe] CGO'25 - Call for Papers Message-ID: IEEE/ACM International Symposium on Code Generation and Optimization (CGO) Co-located with PPoPP, HPCA and CC Las Vegas, USA The International Symposium on Code Generation and Optimization (CGO’25) will be held in Las Vegas, USA. CGO is the premier venue to bring together researchers and practitioners working at the interface of hardware and software on a wide range of optimization and code generation techniques and related issues. The conference spans the spectrum from purely static to fully dynamic approaches, and from pure software-based methods to specific architectural features and support for code generation and optimization. ________________________________ CGO now uses two submissions per year. This follows the model established by other conferences in our field in recent years, such as ASPLOS and OOPSLA. Papers submitted to the first round can either be directly accepted, rejected, or invited to submit a revised version of the paper to the second round. For papers invited to submit a revised version, authors will be given a list of revisions that should be acted on to improve the paper. We will make every effort to ensure that the revised paper is reviewed by the same referees, who will assess whether the revisions are satisfactory. If so, the paper will be accepted. If a paper is rejected, the authors may still submit a revised version in a subsequent round, which will be treated as a new submission. ________________________________ First Submission Deadline * Paper Submission: May 30, 2024 * Author Rebuttal Period: July 9-11, 2024 * Paper Notification: July 22, 2024 Second Submission Deadline * Paper Submission: September 12, 2024 * Author Rebuttal Period: October 22 - 24, 2024 * Paper Notification: November 4, 2024 Contacts: * Hugh Leather - Meta – hleather at meta.com * P. (Saday) Sadayappan – University of Utah – saday at cs.utah.edu ________________________________ Topics Original contributions are solicited on, but not limited to, the following topics: * Code Generation, Translation, Transformation, and Optimization for performance, energy, virtualization, portability, security, or reliability concerns, and architectural support * Efficient execution of dynamically typed and higher-level languages * Optimization and code generation for emerging programming models, platforms, domain-specific languages * Dynamic/static, profile-guided, feedback-directed, and machine learning-based optimization * Static, Dynamic, and Hybrid Analysis for performance, energy, memory locality, throughput or latency, security, reliability, or functional debugging * Program characterization methods * Profiling and instrumentation techniques; architectural support * Novel and efficient tools * Compiler design, practice and experience * Compiler abstraction and intermediate representations * Vertical integration of language features, representations, optimizations, and runtime support for parallelism * Solutions that involve cross-layer (HW/OS/VM/SW) design and integration * Deployed dynamic/static compiler and runtime systems for general purpose, embedded system and Cloud/HPC platforms * Parallelism, heterogeneity, and reconfigurable architectures * Optimizations for heterogeneous or specialized targets, GPUs, SoCs, CGRA and Quantum Computers * Compiler support for vectorization, thread extraction, task scheduling, speculation, transaction, memory management, data distribution and synchronization Standard research papers must be written in the ACM format, and may have up to 11 pages, references excluded. Please ensure that you and your co-authors obtain an ORCID ID, so you can complete the publishing process for your accepted paper. ACM has been involved in ORCID from the start and we have recently made a commitment to collect ORCID IDs from all of our published authors. We are committed to improve author discoverability, ensure proper attribution and contribute to ongoing community efforts around name normalization; your ORCID ID will help in these efforts. By submitting your article to an ACM Publication, you are hereby acknowledging that you and your co-authors are subject to all ACM Publications Policies, including ACM's new Publications Policy on Research Involving Human Participants and Subjects. Alleged violations of this policy or any ACM Publications Policy will be investigated by ACM and may result in a full retraction of your paper, in addition to other potential penalties, as per ACM Publications Policy. ________________________________ Call for Tool and Practical Experience Papers CGO has a second category of papers called “Tools and Practical Experience”. Papers in this category must either give a clear account of a tool’s functionality or summarize a practical experience with realistic case studies. The successful evaluation of an artifact is mandatory for a Tool Paper. Therefore, authors of work conditionally accepted as Tool Papers must submit an artifact to the Artifact Evaluation Committee. The successful evaluation of the artifact is a requirement for final acceptance. Practical experience papers are encouraged, but not required, to submit an artifact to the Artifact Evaluation process. The selection criteria for papers in this category are: * Originality: Papers should present CGO-related technologies applied to real-world problems with scope or characteristics that set them apart from previous solutions. * Usability: The presented Tools or compilers should have broad usage or applicability. They are expected to assist in CGO-related research, or could be extended to investigate or demonstrate new technologies. If significant components are not yet implemented, the paper will not be considered. * Documentation: The tool or compiler should be presented on a web-site giving documentation and further information about the tool. * Benchmark Repository: A suite of benchmarks for testing should be provided. * Availability: The tool or compiler should be available for public use. * Foundations: Papers should incorporate the principles underpinning Code Generation and Optimization (CGO). However, a thorough discussion of theoretical foundations is not required; a summary of such should suffice. * Artifact Evaluation: The submitted artifact must be functional and support the claims made in the paper. Submission of an artifact is mandatory for papers presenting a tool. Tool and Practical Experience papers abide by the same limit of 11 pages in the ACM format, references excluded, and are not distinguished in the final proceedings. We encourage shorter submissions that give account of how scientific ideas have been incorporated and used in practice. ________________________________ Geographic Diversity and Inclusion Authors of papers accepted for CGO 2025 are encouraged to present their work in person. However, to foster the participation of students and professionals from everywhere, CGO 2025 will allow the remote presentation of papers, if their authors are unable to travel to the conference venue for reasons beyond their control (e.g. visa issues). Additionally, the conference organization will try to make attendance of CGO 2025 affordable for as many people as possible, with a specific focus on students from universities located in under-represented countries who are paper authors. ________________________________ Artifact Evaluation The Artifact Evaluation process is run by a separate committee whose task is to assess how the artifacts support the work described in the papers. This process contributes to improved reproducibility in research that should be a great concern to all of us. There is also some evidence that papers with a supporting artifact receive higher citations than papers without artifact evaluation. Authors of accepted papers at CGO have the option of submitting their artifacts for evaluation within two weeks of paper acceptance. To ease the organization of the AE committee, we kindly ask authors to indicate at the time they submit the paper, whether they are interested in submitting an artifact. Papers that go through the Artifact Evaluation process successfully will receive a seal of approval printed on the papers themselves. Additional information is available on the CGO AE web page. Authors of accepted papers are encouraged, but not required, to make these materials publicly available upon publication of the proceedings. ________________________________ Authors should carefully consider the difference in focus between the co-located conferences when deciding where to submit a paper. CGO will make the proceedings freely available via the IEEE Xplore platform during the period from two weeks before to two weeks after the conference. This option will facilitate easy access to the proceedings by conference attendees, and it will also enable the community at large to experience the excitement of learning about the latest developments being presented in the period surrounding the event itself. ________________________________ Distinguished Paper Awards Up to 10% of papers accepted at CGO 2025 will be designated as Distinguished Papers, following the ACM policy. This award is open to both regular and tool papers. -------------- next part -------------- An HTML attachment was scrubbed... URL: From xnningxie at gmail.com Fri May 24 19:52:18 2024 From: xnningxie at gmail.com (Ningning Xie) Date: Fri, 24 May 2024 15:52:18 -0400 Subject: [Haskell-cafe] PLMW@ICFP'24: Call for Participation (travel funding application by June 21) Message-ID: ACM SIGPLAN Programming Languages Mentoring Workshop (PLMW) at ICFP 24, Milan, Italy Workshop: Monday, September 2, 2024 Website: https://icfp24.sigplan.org/home/PLMW-ICFP-2024 PLMW is a workshop co-located with ICFP 2024 (the International Conference on Functional Programming) in Milan, Italy, from September 2-7. The purpose of this mentoring workshop is to encourage graduate students and senior undergraduate students to pursue careers in programming language research. This workshop will bring together world leaders in programming languages research and teaching from academia and industry to help students imagine how they might contribute to our research community. Topics will range from the abstract (e.g., what is PL research and how does one become involved in it) to the concrete (e.g., how to navigate an academic conference, how to pick a research area) as well as technical talks on cutting-edge topics. We especially encourage women and underrepresented minority students, and people with disabilities to attend PLMW. This workshop is part of the activities surrounding ICFP, and takes place the day before the main conference. One goal of the workshop is to make the ICFP conference more accessible to newcomers. We hope that participants will stay through the entire conference. Note that ICFP and PLMW are planned to be largely in-person events. While we recognize that travel to conferences is not easy for everyone, we do hope you will be able to join us in person to get the most out of the conference and its community-building aspects. A number of sponsors have generously donated scholarship funds for qualified students to attend PLMW. These scholarships can cover expenses (airfare, hotel, and registration fees) for attendance at both the workshop and the ICFP conference. Students attending this year will get one year free student membership of SIGPLAN, unless they prefer to opt out during their application. The workshop registration is open to all. Students with alternative sources of funding are welcome as well. —-------------------------------------------------------------- APPLICATION FOR PLMW TRAVEL FUNDING For full consideration for scholarship funding, please apply at the link below by June 21, AoE. We will notify accepted attendees in a rolling fashion until all funding is committed. The application can be accessed at the following URL (Apply by June 21, 2024 AOE for full consideration!): https://forms.gle/vC6udnMWRvvAczPR6 -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikulas at twibright.com Sun May 26 21:57:18 2024 From: mikulas at twibright.com (Mikulas Patocka) Date: Sun, 26 May 2024 23:57:18 +0200 (CEST) Subject: [Haskell-cafe] [ANNOUNCE] Ajla: a new purely functional programming language Message-ID: Hi I'd like to announce the release of Ajla - a new purely functional programming language that looks like traditional procedural languages. If you are interested, see https://www.ajla-lang.cz/ Mikulas From jo at durchholz.org Sun May 26 22:17:13 2024 From: jo at durchholz.org (jo at durchholz.org) Date: Mon, 27 May 2024 00:17:13 +0200 Subject: [Haskell-cafe] [ANNOUNCE] Ajla: a new purely functional programming language In-Reply-To: References: Message-ID: On 26.05.24 23:57, Mikulas Patocka wrote: > Hi > > I'd like to announce the release of Ajla - a new purely functional > programming language that looks like traditional procedural languages. > > If you are interested, see https://www.ajla-lang.cz/ Just one thing that caught my eye: > Ajla has efficient mutable arrays - if an array's reference count is one, the array is modified in place. If not, a copy of the array is created and modified. That design decision restricts you to reference-counting garbage collectors. These have multiple problems and restrictions, such as: - Inability to deal with reference cycles. - Assigning to a reference means TWO additional write operations to keep the reference counts up-to-date; this means your programmers will try to minimize allocation, which tends to restrict the design space so the code gets worse. - Reference counting is less efficient than copying collectors for most cases. - Being restricted to one GC algorithm means the language cannot improve on that front, the GC approach is baked into the language semantics and cannot be changed if it turns out it was an unlucky choice. I'd recommend doing something like the borrowing semantics in Rust, or uniqueness typing of Clean: Some language mechanism that makes sure that all mutable data is only accessible through a single reference at any one time. This will also allow compilers to aggressively optimize, since if a language enforces a one-reference-to-mutables-only, there can be no aliasing, and that's a huge win as any even merely potential aliasing prevents a whole host of important optimizations. Just my 2c :-) Regards, Jo From lemming at henning-thielemann.de Sun May 26 22:24:42 2024 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Mon, 27 May 2024 00:24:42 +0200 (CEST) Subject: [Haskell-cafe] [ANNOUNCE] Ajla: a new purely functional programming language In-Reply-To: References: Message-ID: On Mon, 27 May 2024, jo at durchholz.org wrote: > On 26.05.24 23:57, Mikulas Patocka wrote: > >> Ajla has efficient mutable arrays - if an array's reference count is one, >> the array is modified in place. If not, a copy of the array is created >> and modified. > > That design decision restricts you to reference-counting garbage > collectors. These have multiple problems and restrictions, such as: > ... Interestingly, Lean4 made the same design decision (for reference counting) for the same reason (in-place array updates). I am also sceptical. From mikulas at twibright.com Mon May 27 16:21:32 2024 From: mikulas at twibright.com (Mikulas Patocka) Date: Mon, 27 May 2024 18:21:32 +0200 (CEST) Subject: [Haskell-cafe] [ANNOUNCE] Ajla: a new purely functional programming language In-Reply-To: References: Message-ID: On Mon, 27 May 2024, jo at durchholz.org wrote: > On 26.05.24 23:57, Mikulas Patocka wrote: > > Hi > > > > I'd like to announce the release of Ajla - a new purely functional > > programming language that looks like traditional procedural languages. > > > > If you are interested, see https://www.ajla-lang.cz/ > > Just one thing that caught my eye: > > > Ajla has efficient mutable arrays - if an array's reference count is one, > the array is modified in place. If not, a copy of the array is created and > modified. > > That design decision restricts you to reference-counting garbage > collectors. These have multiple problems and restrictions, such as: > - Inability to deal with reference cycles. You can create circular lists in Haskell, but not in Ajla. I.e. the statement "var cycle := [ 1, 2, 3 ] + cycle;" won't compile, because the variable cycle is not known. > - Assigning to a reference means TWO additional write operations to keep > the reference counts up-to-date; this means your programmers will try to > minimize allocation, which tends to restrict the design space so the > code gets worse. > - Reference counting is less efficient than copying collectors for most > cases. > - Being restricted to one GC algorithm means the language cannot improve > on that front, the GC approach is baked into the language semantics and > cannot be changed if it turns out it was an unlucky choice. Ajla has possibility to bypass the reference counting - if the refcount is -1, it means that the object is stored in a read-only memory-mapped file and the refcount won't be updated at all. So, if I find some workload where there would be many threads massively thrashing on the same reference count, I could set it to -1 and let some primitive GC free it. So far, I haven't found such a workload, so I haven't implemented it. > I'd recommend doing something like the borrowing semantics in Rust, or > uniqueness typing of Clean: Some language mechanism that makes sure that > all mutable data is only accessible through a single reference at any > one time. If you use arrays in the same way as unique types, there would be no refcount modification. I.e. if you pass an array to a function and stop using it in the parent function, there is refcount increment followed by refcount decrement - and the optimizer will fuse these two refcount operations into nothing. > This will also allow compilers to aggressively optimize, since if a > language enforces a one-reference-to-mutables-only, there can be no > aliasing, and that's a huge win as any even merely potential aliasing > prevents a whole host of important optimizations. I've written SSA-based optimizer for Ajla (see the file newlib/compiler/optimize/ssa.ajla) and it was surprisingly easy because there is no aliasing. From the user's point of view, every variable can be modified independently. Modifying a single variable doesn't modify any other. Mikulas > Just my 2c :-) > > Regards, > Jo > _______________________________________________ > 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 amindfv at mailbox.org Wed May 29 03:38:53 2024 From: amindfv at mailbox.org (amindfv at mailbox.org) Date: Tue, 28 May 2024 23:38:53 -0400 Subject: [Haskell-cafe] GHC release series adoption rates In-Reply-To: References: <87sey1gafx.fsf@smart-cactus.org> Message-ID: On Tue, May 28, 2024 at 09:30:46PM +0100, Simon Peyton Jones wrote: > [...] In particular, it'd be great to have some telemetry. Telemetry is a complex > issue -- but we now have some very well-informed colleagues: the team at > Scarf. So maybe we'll get some basic data before long, which would be a > big step forward. (We'd expect to be transparent about that too of course!) Respectfully, "we'd expect to be transparent about that" already feels like a violated promise. I did not know until this email that Haskell.org had engaged a telemetry gateway using "zero-cookie tracking pixels" for "meticulous tracking of visitor patterns" to engage with their "previously anonymous audience"! (Quotes from https://about.scarf.sh/post/haskell-org-bridging-the-gap-between-language-innovation-and-community-understanding and from the homepage and FAQ.) I'd expect the primary purpose of a language homepage, language asset distribution, etc. is to provide software to those who would use it. To use tarball distribution to "understand where in the funnel your open source users are," "transforming anonymous downloads, web traffic, and usage into company profiles and journeys," etc. feels like a deep scammy repurposing of our central resource (Haskell.org) for surveillance and marketing purposes. They explicitly focus on, for example, using IP addresses for "Identifying which companies are using a particular package." And as far as I can tell, this data is going to Scarf the (multimillion dollar, VC-funded) company too. This is bad. I want to reiterate my deep respect for the project, but jeez - this is not a good path to go down. Thanks, Tom From jgbm at acm.org Wed May 29 15:14:03 2024 From: jgbm at acm.org (J. Garrett Morris) Date: Wed, 29 May 2024 10:14:03 -0500 Subject: [Haskell-cafe] FINAL CFP: Haskell Symposium 2024 Message-ID: Friends, The Haskell Symposium submission deadline is less than a week away, the PC is eagerly standing by, the HotCRP instance is open (thanks Mati!),... the only thing missing is you! Hope to see you in Milan. /g ---- The ACM SIGPLAN Haskell Symposium 2024 will be co-located with the 2024 International Conference on Functional Programming (ICFP). The Haskell Symposium presents original research on Haskell, discusses practical experience and future development of the language, and promotes other forms of declarative programming. Topics of interest include: - *Language design,* with a focus on possible extensions and modifications of Haskell as well as critical discussions of the status quo; - *Theory,* such as formal semantics of the present language or future extensions, type systems, effects, metatheory, and foundations for program analysis and transformation; - *Implementations,* including program analysis and transformation, static and dynamic compilation for sequential, parallel, and distributed architectures, memory management, as well as foreign function and component interfaces; - *Libraries,* that demonstrate new ideas or techniques for functional programming in Haskell; - *Tools,* such as profilers, tracers, debuggers, preprocessors, and testing tools; - *Applications,* to scientific and symbolic computing, databases, multimedia, telecommunication, the web, and so forth; - *Functional Pearls,* being elegant and instructive programming examples; - *Experience Reports,* to document general practice and experience in education, industry, or other contexts; - *Tutorials,* to document how to use a particular language feature, programming technique, tool or library within the Haskell ecosystem; - *System Demonstrations,* based on running software rather than novel research results. Regular papers should explain their research contributions in both general and technical terms, identifying what has been accomplished, explaining why it is significant, and relating it to previous work, and to other languages where appropriate. *New this year*, talk proposals need not be full-length, and should report work in progress relevant to Haskell language design, theory, tools, or applications. Talk proposals will be evaluated by the PC for novelty and relevance to the Haskell community, but are not expected to include finished results. Talk proposals will not be distributed to attendees, but authors of talk proposals may provide links to materials to be included on the program. Experience reports and functional pearls need not necessarily report original academic research results. For example, they may instead report reusable programming idioms, elegant ways to approach a problem, or practical experience that will be useful to other users, implementers, or researchers. The key criterion for such a paper is that it makes a contribution from which other Haskellers can benefit. It is not enough simply to describe a standard solution to a standard programming problem, or report on experience where you used Haskell in the standard way and achieved the result you were expecting. Like an experience report and a functional pearl, tutorials should make a contribution from which other Haskellers can benefit. What distinguishes a tutorial is that its focus is on explaining an aspect of the Haskell language and/or ecosystem in a way that is generally useful to a Haskell audience. Tutorials for many such topics can be found online; the distinction here is that by writing it up for formal review it will be vetted by experts and formally published. System demonstrations should summarize the system capabilities that would be demonstrated. The proposals will be judged on whether the ensuing session is likely to be important and interesting to the Haskell community at large, whether on grounds academic or industrial, theoretical or practical, technical, social or artistic. Please contact the program chair with any questions about the relevance of a proposal. If your contribution is not a research paper, please mark the title of your experience report, functional pearl, tutorial or system demonstration as such, by supplying a subtitle (Talk Proposal, Experience Report, Functional Pearl, Tutorial Paper, System Demonstration). Submission Details Formatting Submitted papers should be in portable document format (PDF), formatted using the ACM SIGPLAN style guidelines. Authors should use the acmart format, with the sigplan sub-format for ACM proceedings. For details, see: http://www.sigplan.org/Resources/Author/#acmart-format It is recommended to use the review option when submitting a paper; this option enables line numbers for easy reference in reviews. Talk proposals, functional pearls, experience reports, tutorials and demo proposals should be labelled clearly as such. Lightweight Double-blind Reviewing Haskell Symposium 2024 will use a lightweight double-blind reviewing process. To facilitate this, submitted papers must adhere to two rules: - Author names and institutions must be omitted, and - References to authors’ own related work should be in the third person (e.g., not “We build on our previous work” but rather "We build on the work of "). The purpose of this process is to help the reviewers come to an initial judgment about the paper without bias, not to make it impossible for them to discover the authors if they were to try. Nothing should be done in the name of anonymity that weakens the submission or makes the job of reviewing the paper more difficult (e.g., important background references should not be omitted or anonymized). In addition, authors should feel free to disseminate their ideas or draft versions of their paper as they normally would. For instance, authors may post drafts of their papers on the web or give talks on their research ideas. A reviewer will learn the identity of the author(s) of a paper after a review is submitted. Page Limits The length of submissions should not exceed the following limits: - *Regular paper:* 12 pages - *Talk proposals:* 6 pages - *Functional pearl:* 12 pages - *Tutorial:* 12 pages - *Experience report:* 6 pages - *Demo proposal:* 2 pages There is no requirement that all pages are used. For example, a good talk proposal might be two pages, and a functional pearl may be much shorter than 12 pages. In all cases, the list of references is not counted against these page limits. Deadlines - *Paper submission:* 3 June 2024 (Mon) - *Notification:* 5 July 2024 (Fri) - *Camera-ready Deadline:* 18 July 2024 (Thu) Deadlines are end of day Anywhere on Earth (UTC-12) . Submission Submissions must adhere to SIGPLAN’s republication policy , and authors should be aware of ACM’s policies on plagiarism . Program Committee members are allowed to submit papers, but their papers will be held to a higher standard. The paper submission deadline and length limitations are firm. There will be no extensions, and papers violating the length limitations will be summarily rejected. Papers should be submitted through HotCRP at: https://haskell24.hotcrp.com/ Improved versions of a paper may be submitted at any point before the submission deadline using the same web interface. *Supplementary material:* Authors have the option to attach supplementary material to a submission, on the understanding that reviewers may choose not to look at it. This supplementary material should not be submitted as part of the main document; instead, it should be uploaded as a separate PDF document or tarball. Supplementary material should be uploaded at submission time, not by providing a URL in the paper that points to an external repository. Authors can distinguish between anonymized and non-anonymized supplementary material. Anonymized supplementary material will be visible to reviewers immediately; non-anonymized supplementary material will be revealed to reviewers only after they have submitted their review of the paper and learned the identity of the author(s). *Resubmitted Papers:* authors who submit a revised version of a paper that has previously been rejected by another conference have the option to attach an annotated copy of the reviews of their previous submission(s), explaining how they have addressed these previous reviews in the present submission. If a reviewer identifies him/herself as a reviewer of this previous submission and wishes to see how his/her comments have been addressed, the conference chair will communicate to this reviewer the annotated copy of his/her previous review. Otherwise, no reviewer will read the annotated copies of the previous reviews. Proceedings Accepted papers will be included in the ACM Digital Library. Their authors will be required to choose one of the following options: - Author retains copyright of the work and grants ACM a non-exclusive permission-to-publish license (and, optionally, licenses the work with a Creative Commons license); - Author retains copyright of the work and grants ACM an exclusive permission-to-publish license; - Author transfers copyright of the work to ACM. For more information, please see ACM Copyright Policy and ACM Author Rights . Accepted proposals for system demonstrations will be posted on the symposium website but not formally published in the proceedings. *Publication date:* The official publication date of accepted papers is the date the proceedings are made available in the ACM Digital Library. This date may be up to two weeks prior to the first day of the conference. The official publication date affects the deadline for any patent filings related to published work. Artifacts Authors of accepted papers are encouraged to make auxiliary material (artifacts like source code, test data, etc.) available with their paper. They can opt to have these artifacts published alongside their paper in the ACM Digital Library (copyright of artifacts remains with the authors). If an accepted paper’s artifacts are made permanently available for retrieval in a publicly accessible archival repository like the ACM Digital Library, that paper qualifies for an Artifacts Available badge ( https://www.acm.org/publications/policies/artifact-review-badging#available). Applications for such a badge can be made after paper acceptance and will be reviewed by the PC chair. -------------- next part -------------- An HTML attachment was scrubbed... URL: From mikulas at twibright.com Wed May 29 17:51:22 2024 From: mikulas at twibright.com (Mikulas Patocka) Date: Wed, 29 May 2024 19:51:22 +0200 (CEST) Subject: [Haskell-cafe] [ANNOUNCE] Ajla: a new purely functional programming language In-Reply-To: References: Message-ID: On Mon, 27 May 2024, Pierpaolo Bernardi wrote: > Hello, > > the language is interesting. > > Why don't you start a mailing list to keep interested people informed about it? > > Cheers That's a great idea. I created the mailing list at https://www.freelists.org/list/ajla Mikulas From daniel.trstenjak at gmail.com Thu May 30 07:54:21 2024 From: daniel.trstenjak at gmail.com (Daniel Trstenjak) Date: Thu, 30 May 2024 09:54:21 +0200 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string Message-ID: <20240530075421.GA20746@octa> Hi, I'm trying to get my program to compile with ghc-9.8.2. Raising the upper bounds of my dependencies I'm running into a compile error for the unix-2.8.5.1 package: [15 of 53] Compiling System.Posix.Env.PosixString ( /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.hs, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.o, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.dyn_o ) System/Posix/Env/PosixString.hsc:45:1: error: [GHC-87110] Could not load module ‘System.OsString.Internal.Types’. It is a member of the hidden package ‘os-string-2.0.3’. Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. It is a member of the hidden package ‘filepath-1.4.200.1’. Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. Use -v to see a list of the files searched for. | 45 | import System.OsString.Internal.Types | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ System/Posix/Env/PosixString.hsc:47:1: error: [GHC-61948] Could not find module ‘System.OsString.Data.ByteString.Short’. Perhaps you meant System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) | 47 | import qualified "os-string" System.OsString.Data.ByteString.Short as B | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ System/Posix/PosixPath/FilePath.hsc:50:1: error: [GHC-61948] Could not find module ‘System.OsString.Data.ByteString.Short’. Perhaps you meant System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) | 50 | import "os-string" System.OsString.Data.ByteString.Short as BSS | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ System/Posix/PosixPath/FilePath.hsc:55:1: error: [GHC-87110] Could not load module ‘System.OsString.Internal.Types’. It is a member of the hidden package ‘os-string-2.0.3’. Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. It is a member of the hidden package ‘filepath-1.4.200.1’. Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. Use -v to see a list of the files searched for. | 55 | import System.OsString.Internal.Types (PosixString(..), pattern PS) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I can get rid of this compile error and a similar one for the directory package by setting the flag os-string in my cabal.project file: constraints: unix +os-string, directory +os-string Now I'm wondering what is the right way to handle this case? Thanks for any hints! Greetings, Daniel From ben.franksen at online.de Thu May 30 13:50:49 2024 From: ben.franksen at online.de (Ben Franksen) Date: Thu, 30 May 2024 15:50:49 +0200 Subject: [Haskell-cafe] [ANN] Darcs 2.18.3 release Message-ID: <82ac9074-02dc-5a58-ffdf-f6ff6656e13a@online.de> Hello Everyone On behalf of the Darcs team, I would like to (somewhat belatedly) announce the release of Darcs 2.18.3 [1]. This is a minor bug fix release. The main issue was that Darcs failed to work on Windows when built with ghc >= 9.6. The reason was a bug in some recent versions of the directory package's 'copyFile' procedure and we adapted the dependency bounds so to avoid those versions. See [2] for the full release notes. Cheers Ben [1] https://hackage.haskell.org/package/darcs-2.18.3 [2] https://hackage.haskell.org/package/darcs-2.18.3/changelog -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0xD36E45316E58CC97.asc Type: application/pgp-keys Size: 3476 bytes Desc: OpenPGP public key URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 236 bytes Desc: OpenPGP digital signature URL: From andrew.lelechenko at gmail.com Thu May 30 20:22:43 2024 From: andrew.lelechenko at gmail.com (Andrew Lelechenko) Date: Thu, 30 May 2024 21:22:43 +0100 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <20240530075421.GA20746@octa> References: <20240530075421.GA20746@octa> Message-ID: <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> Normally you do not need to set `constraints: unix +os-string, directory +os-string`. It’s better to let Cabal figure out a build plan without forcing its hand. Sharing your project would help, otherwise it’s hard to diagnose. Best regards, Andrew > On 30 May 2024, at 08:54, Daniel Trstenjak wrote: > > Hi, > > I'm trying to get my program to compile with ghc-9.8.2. Raising the > upper bounds of my dependencies I'm running into a compile error > for the unix-2.8.5.1 package: > > [15 of 53] Compiling System.Posix.Env.PosixString ( /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.hs, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.o, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.dyn_o ) > > System/Posix/Env/PosixString.hsc:45:1: error: [GHC-87110] > Could not load module ‘System.OsString.Internal.Types’. > It is a member of the hidden package ‘os-string-2.0.3’. > Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. > It is a member of the hidden package ‘filepath-1.4.200.1’. > Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. > Use -v to see a list of the files searched for. > | > 45 | import System.OsString.Internal.Types > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > System/Posix/Env/PosixString.hsc:47:1: error: [GHC-61948] > Could not find module ‘System.OsString.Data.ByteString.Short’. > Perhaps you meant > System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) > System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) > System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) > | > 47 | import qualified "os-string" System.OsString.Data.ByteString.Short as B > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > System/Posix/PosixPath/FilePath.hsc:50:1: error: [GHC-61948] > Could not find module ‘System.OsString.Data.ByteString.Short’. > Perhaps you meant > System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) > System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) > System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) > | > 50 | import "os-string" System.OsString.Data.ByteString.Short as BSS > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > System/Posix/PosixPath/FilePath.hsc:55:1: error: [GHC-87110] > Could not load module ‘System.OsString.Internal.Types’. > It is a member of the hidden package ‘os-string-2.0.3’. > Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. > It is a member of the hidden package ‘filepath-1.4.200.1’. > Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. > Use -v to see a list of the files searched for. > | > 55 | import System.OsString.Internal.Types (PosixString(..), pattern PS) > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > I can get rid of this compile error and a similar one for the directory > package by setting the flag os-string in my cabal.project file: > constraints: unix +os-string, directory +os-string > > Now I'm wondering what is the right way to handle this case? > Thanks for any hints! > > Greetings, > Daniel > _______________________________________________ > 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 x at tomsmeding.com Thu May 30 21:00:21 2024 From: x at tomsmeding.com (Tom Smeding) Date: Thu, 30 May 2024 23:00:21 +0200 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> References: <20240530075421.GA20746@octa> <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> Message-ID: <69c7e343-d0b2-4d4d-a0aa-aa12aae29283@tomsmeding.com> `os-string` has been split from `filepath` in filepath 1.5.0.0. If you search for "flag(os-string)" in unix' cabal file here:   https://hackage.haskell.org/package/unix-2.8.5.1/unix.cabal you'll see that the package has been set up to use `os-string` if `filepath >= 1.5.0.0`, and to not depend on `os-string` otherwise. For filepath < 1.5.0.0, the modules in question are in the `filepath` package. You can get them by manually depending on `filepath` too. If you want the post-`os-string` split `filepath`, simply add a lower bound on the version of `filepath` in your thing.cabal file: `filepath >= 1.5.0.0`. As you can see, the diagnostic you got shows that you were indeed using an older `filepath` version. - Tom On 30/05/2024 22:22, Andrew Lelechenko wrote: > Normally you do not need to set `constraints: unix +os-string, directory +os-string`. It’s better to let Cabal figure out a build plan without forcing its hand. > > Sharing your project would help, otherwise it’s hard to diagnose. > > Best regards, > Andrew > >> On 30 May 2024, at 08:54, Daniel Trstenjak wrote: >> >> Hi, >> >> I'm trying to get my program to compile with ghc-9.8.2. Raising the >> upper bounds of my dependencies I'm running into a compile error >> for the unix-2.8.5.1 package: >> >> [15 of 53] Compiling System.Posix.Env.PosixString ( /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.hs, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.o, /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.dyn_o ) >> >> System/Posix/Env/PosixString.hsc:45:1: error: [GHC-87110] >> Could not load module ‘System.OsString.Internal.Types’. >> It is a member of the hidden package ‘os-string-2.0.3’. >> Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. >> It is a member of the hidden package ‘filepath-1.4.200.1’. >> Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. >> Use -v to see a list of the files searched for. >> | >> 45 | import System.OsString.Internal.Types >> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> System/Posix/Env/PosixString.hsc:47:1: error: [GHC-61948] >> Could not find module ‘System.OsString.Data.ByteString.Short’. >> Perhaps you meant >> System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) >> System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) >> System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) >> | >> 47 | import qualified "os-string" System.OsString.Data.ByteString.Short as B >> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> System/Posix/PosixPath/FilePath.hsc:50:1: error: [GHC-61948] >> Could not find module ‘System.OsString.Data.ByteString.Short’. >> Perhaps you meant >> System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.3) >> System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.200.1) >> System.OsString.Data.ByteString.Short.Word16 (needs flag -package-id os-string-2.0.3) >> | >> 50 | import "os-string" System.OsString.Data.ByteString.Short as BSS >> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> System/Posix/PosixPath/FilePath.hsc:55:1: error: [GHC-87110] >> Could not load module ‘System.OsString.Internal.Types’. >> It is a member of the hidden package ‘os-string-2.0.3’. >> Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file. >> It is a member of the hidden package ‘filepath-1.4.200.1’. >> Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file. >> Use -v to see a list of the files searched for. >> | >> 55 | import System.OsString.Internal.Types (PosixString(..), pattern PS) >> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> >> I can get rid of this compile error and a similar one for the directory >> package by setting the flag os-string in my cabal.project file: >> constraints: unix +os-string, directory +os-string >> >> Now I'm wondering what is the right way to handle this case? >> Thanks for any hints! >> >> Greetings, >> Daniel >> _______________________________________________ >> 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. From x at tomsmeding.com Thu May 30 21:07:49 2024 From: x at tomsmeding.com (Tom Smeding) Date: Thu, 30 May 2024 23:07:49 +0200 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <69c7e343-d0b2-4d4d-a0aa-aa12aae29283@tomsmeding.com> References: <20240530075421.GA20746@octa> <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> <69c7e343-d0b2-4d4d-a0aa-aa12aae29283@tomsmeding.com> Message-ID: I'm sorry, I should have looked better at what you were actually doing -- I didn't realise you were getting these errors while building `unix` itself. Are you sure you have an unmodified copy of the `unix` package? In particular, it seems that it's missing a dependency on the `filepath` package, that should be declared on unix.cabal line 84 for your older version of `filepath`. Note that filepath 1.4.200.1 is marked deprecated on Hackage (the version number is coloured red). If you don't want to upgrade to filepath 1.5, you should probably use 1.4.300.2. - Tom On 30/05/2024 23:00, Tom Smeding wrote: > `os-string` has been split from `filepath` in filepath 1.5.0.0. If you > search for "flag(os-string)" in unix' cabal file here: >   https://hackage.haskell.org/package/unix-2.8.5.1/unix.cabal > you'll see that the package has been set up to use `os-string` if > `filepath >= 1.5.0.0`, and to not depend on `os-string` otherwise. > > For filepath < 1.5.0.0, the modules in question are in the `filepath` > package. You can get them by manually depending on `filepath` too. > > If you want the post-`os-string` split `filepath`, simply add a lower > bound on the version of `filepath` in your thing.cabal file: `filepath > >= 1.5.0.0`. As you can see, the diagnostic you got shows that you > were indeed using an older `filepath` version. > > - Tom > > On 30/05/2024 22:22, Andrew Lelechenko wrote: >> Normally you do not need to set `constraints: unix +os-string, >> directory +os-string`. It’s better to let Cabal figure out a build >> plan without forcing its hand. >> >> Sharing your project would help, otherwise it’s hard to diagnose. >> >> Best regards, >> Andrew >> >>> On 30 May 2024, at 08:54, Daniel Trstenjak >>> wrote: >>> >>> Hi, >>> >>> I'm trying to get my program to compile with ghc-9.8.2. Raising the >>> upper bounds of my dependencies I'm running into a compile error >>> for the unix-2.8.5.1 package: >>> >>> [15 of 53] Compiling System.Posix.Env.PosixString ( >>> /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.hs, >>> /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.o, >>> /home/dan/sources/unix-2.8.5.1/dist-newstyle/build/x86_64-linux/ghc-9.8.2/unix-2.8.5.1/build/System/Posix/Env/PosixString.dyn_o >>> ) >>> >>> System/Posix/Env/PosixString.hsc:45:1: error: [GHC-87110] >>>     Could not load module ‘System.OsString.Internal.Types’. >>>     It is a member of the hidden package ‘os-string-2.0.3’. >>>     Perhaps you need to add ‘os-string’ to the build-depends in your >>> .cabal file. >>>     It is a member of the hidden package ‘filepath-1.4.200.1’. >>>     Perhaps you need to add ‘filepath’ to the build-depends in your >>> .cabal file. >>>     Use -v to see a list of the files searched for. >>>    | >>> 45 | import System.OsString.Internal.Types >>>    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> >>> System/Posix/Env/PosixString.hsc:47:1: error: [GHC-61948] >>>     Could not find module ‘System.OsString.Data.ByteString.Short’. >>>     Perhaps you meant >>>       System.OsString.Data.ByteString.Short (needs flag -package-id >>> os-string-2.0.3) >>>       System.OsPath.Data.ByteString.Short (needs flag -package-id >>> filepath-1.4.200.1) >>>       System.OsString.Data.ByteString.Short.Word16 (needs flag >>> -package-id os-string-2.0.3) >>>    | >>> 47 | import qualified "os-string" >>> System.OsString.Data.ByteString.Short as B >>>    | >>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> >>> System/Posix/PosixPath/FilePath.hsc:50:1: error: [GHC-61948] >>>     Could not find module ‘System.OsString.Data.ByteString.Short’. >>>     Perhaps you meant >>>       System.OsString.Data.ByteString.Short (needs flag -package-id >>> os-string-2.0.3) >>>       System.OsPath.Data.ByteString.Short (needs flag -package-id >>> filepath-1.4.200.1) >>>       System.OsString.Data.ByteString.Short.Word16 (needs flag >>> -package-id os-string-2.0.3) >>>    | >>> 50 | import "os-string" System.OsString.Data.ByteString.Short as BSS >>>    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> >>> System/Posix/PosixPath/FilePath.hsc:55:1: error: [GHC-87110] >>>     Could not load module ‘System.OsString.Internal.Types’. >>>     It is a member of the hidden package ‘os-string-2.0.3’. >>>     Perhaps you need to add ‘os-string’ to the build-depends in your >>> .cabal file. >>>     It is a member of the hidden package ‘filepath-1.4.200.1’. >>>     Perhaps you need to add ‘filepath’ to the build-depends in your >>> .cabal file. >>>     Use -v to see a list of the files searched for. >>>    | >>> 55 | import System.OsString.Internal.Types (PosixString(..), pattern >>> PS) >>>    | >>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> >>> I can get rid of this compile error and a similar one for the directory >>> package by setting the flag os-string in my cabal.project file: >>>    constraints: unix +os-string, directory +os-string >>> >>> Now I'm wondering what is the right way to handle this case? >>> Thanks for any hints! >>> >>> Greetings, >>> Daniel >>> _______________________________________________ >>> 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. > > _______________________________________________ > 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 daniel.trstenjak at gmail.com Fri May 31 13:17:46 2024 From: daniel.trstenjak at gmail.com (Daniel Trstenjak) Date: Fri, 31 May 2024 15:17:46 +0200 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> References: <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> Message-ID: > Sharing your project would help, otherwise it’s hard to diagnose. The project is https://github.com/dan-t/cabal-bounds. Cloning the current version and building it with ghc-9.8.2, cabal-3.10.3.0 and ´cabal build —allow-newer´ should result in the described error. Greetings, Daniel -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrew.lelechenko at gmail.com Fri May 31 19:38:09 2024 From: andrew.lelechenko at gmail.com (Andrew Lelechenko) Date: Fri, 31 May 2024 20:38:09 +0100 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: References: <82C16C7B-A68D-4AEA-833B-4B5D202930AD@gmail.com> Message-ID: <9E2100A9-6F4F-4406-8F26-983982906158@gmail.com> Hi Daniel, --allow-newer is a blunt instrument, not much surprise it fails. Use a more precise incantation: cabal build --allow-newer='cabal-bounds:*,cabal-lenses:*’ works fine for me. Best regards, Andrew > On 31 May 2024, at 14:17, Daniel Trstenjak wrote: > > > > Sharing your project would help, otherwise it’s hard to diagnose. > > The project is https://github.com/dan-t/cabal-bounds. Cloning the current version > and building it with ghc-9.8.2, cabal-3.10.3.0 and ´cabal build —allow-newer´ should result in the > described error. > > Greetings, > Daniel > _______________________________________________ > 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 daniel.trstenjak at gmail.com Fri May 31 20:57:22 2024 From: daniel.trstenjak at gmail.com (Daniel Trstenjak) Date: Fri, 31 May 2024 22:57:22 +0200 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <9E2100A9-6F4F-4406-8F26-983982906158@gmail.com> References: <9E2100A9-6F4F-4406-8F26-983982906158@gmail.com> Message-ID: <7B3B5EE2-648D-4A8E-B528-1157670D1267@gmail.com> Hi Andrew, > --allow-newer is a blunt instrument, not much surprise it fails. Use a more precise incantation: cabal build --allow-newer='cabal-bounds:*,cabal-lenses:*’ works fine for me. thanks for the hint, but how can this compile error occur if cabal can resolve the dependencies? I would‘ve thought, that the dependency resolution would fail before. Greetings, Daniel From allbery.b at gmail.com Fri May 31 21:08:03 2024 From: allbery.b at gmail.com (Brandon Allbery) Date: Fri, 31 May 2024 17:08:03 -0400 Subject: [Haskell-cafe] Issue building with ghc-9.8.2 and packages unix, directory, filepath and os-string In-Reply-To: <7B3B5EE2-648D-4A8E-B528-1157670D1267@gmail.com> References: <9E2100A9-6F4F-4406-8F26-983982906158@gmail.com> <7B3B5EE2-648D-4A8E-B528-1157670D1267@gmail.com> Message-ID: The problem is that `--allow-newer` tells cabal to ignore dependencies' upper bounds completely. If those bounds turn out to be necessary in some cases, the solver will produce a bad build plan. Using finer-grained (per-dependency) `--allow-newer` can avoid this by only permitting the solver to ignore specific constraints. On Fri, May 31, 2024 at 4:57 PM Daniel Trstenjak wrote: > Hi Andrew, > > > --allow-newer is a blunt instrument, not much surprise it fails. Use a > more precise incantation: cabal build > --allow-newer='cabal-bounds:*,cabal-lenses:*’ works fine for me. > > thanks for the hint, but how can this compile error occur if cabal can > resolve the > dependencies? I would‘ve thought, that the dependency resolution would > fail before. > > Greetings, > Daniel > _______________________________________________ > 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: