From djsamperi at gmail.com Thu May 4 04:12:59 2023 From: djsamperi at gmail.com (Dominick Samperi) Date: Thu, 4 May 2023 00:12:59 -0400 Subject: [Haskell-cafe] Contributing packages? Message-ID: I just tried to upload a new Haskell package and ran into some difficulties. If I just try to upload, it fails and says I need to contact somebody in the trustees group to be added to the Uploaders group. If I try to upload a package candidate instead, it says Forbidden, No access for this resource. The Uploading packages help page is not very helpful. Also, I have a Hackage account and I can get to the account management page, and generate an auth key, but I don't know what I can do with that. It seems the package candidate feature is the way to go, since direct uploads are irreversible and more difficult to manage. Any tips would be appreciated. Thanks, Dominick -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Thu May 4 06:23:17 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Thu, 4 May 2023 08:23:17 +0200 (CEST) Subject: [Haskell-cafe] Contributing packages? In-Reply-To: References: Message-ID: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> On Thu, 4 May 2023, Dominick Samperi wrote: > I just tried to upload a new Haskell package and ran into some > difficulties. If I just try to upload, it fails and says I need to > contact somebody in the trustees group to be added to the Uploaders > group. > > If I try to upload a package candidate instead, it says Forbidden, No > access for this resource. You need a Hackage account for both candidate upload and final release. > Also, I have a Hackage account and I can get to the account management > page, and generate an auth key, but I don't know what I can do with > that. It's a long time ago that I registered my account, but maybe your account must be added to a special group, the group Uploaders. I do not need an auth key for uploading, just user name and password. I use 'cabal upload' for Hackage releases. > It seems the package candidate feature is the way to go, since > direct uploads are irreversible and more difficult to manage. right You can watch and check the appearance of your package candidate at Hackage before publishing. You can even use the uploaded candidate temporarily in your project by adding its tarball URL to cabal.project.local or stack.yaml. From merijn at inconsistent.nl Thu May 4 08:20:50 2023 From: merijn at inconsistent.nl (Merijn Verstraaten) Date: Thu, 4 May 2023 10:20:50 +0200 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> Message-ID: <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Unlike the "long time ago", when everyone would immediately get upload rights upon account creation, you now need to be manually added to the Uploaders group by mailing the hackage admin address. This due to spammers abusing hackage and uploading packages consisting solely of linkspam/advertisements. Cheers, Merijn > On 4 May 2023, at 08:23, Henning Thielemann wrote: > > > On Thu, 4 May 2023, Dominick Samperi wrote: > >> I just tried to upload a new Haskell package and ran into some difficulties. If I just try to upload, it fails and says I need to contact somebody in the trustees group to be added to the Uploaders group. >> If I try to upload a package candidate instead, it says Forbidden, No access for this resource. > > You need a Hackage account for both candidate upload and final release. > >> Also, I have a Hackage account and I can get to the account management page, and generate an auth key, but I don't know what I can do with that. > > It's a long time ago that I registered my account, but maybe your account must be added to a special group, the group Uploaders. > > I do not need an auth key for uploading, just user name and password. I use 'cabal upload' for Hackage releases. > >> It seems the package candidate feature is the way to go, since >> direct uploads are irreversible and more difficult to manage. > > right > > You can watch and check the appearance of your package candidate at Hackage before publishing. You can even use the uploaded candidate temporarily in your project by adding its tarball URL to cabal.project.local or stack.yaml. > _______________________________________________ > 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 lemming at henning-thielemann.de Thu May 4 09:42:04 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Thu, 4 May 2023 11:42:04 +0200 (CEST) Subject: [Haskell-cafe] [Haskell] The Point of this List In-Reply-To: References: <46893CA6-05C9-43AD-BEFC-9AC7D9D594CD@steinitz.org> Message-ID: On Thu, 4 May 2023, James Flanagan wrote: > Thank you for this tip. Wasn't aware of Haskell-Cafe. > > Maybe this is the right place for conference announcements then, if it's > just for announcements in general. haskell at haskell.org is intended for announcements of all kind, both conferences and Haskell software. I do not see a point in moving conference announcements to haskell-cafe and leave haskell at haskell.org for Haskell-unrelated conference spam. Btw. I moved the discussion to Haskell Cafe, because haskell at haskell.org is really for announcements not for discussion. From djsamperi at gmail.com Thu May 4 15:32:44 2023 From: djsamperi at gmail.com (Dominick Samperi) Date: Thu, 4 May 2023 11:32:44 -0400 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Message-ID: Thanks for the feedback. It might be helpful to add this requirement to the Package upload page, instead of only displaying it after a failed upload. On Thu, May 4, 2023 at 4:23 AM Merijn Verstraaten wrote: > Unlike the "long time ago", when everyone would immediately get upload > rights upon account creation, you now need to be manually added to the > Uploaders group by mailing the hackage admin address. This due to spammers > abusing hackage and uploading packages consisting solely of > linkspam/advertisements. > > Cheers, > Merijn > > > On 4 May 2023, at 08:23, Henning Thielemann < > lemming at henning-thielemann.de> wrote: > > > > > > On Thu, 4 May 2023, Dominick Samperi wrote: > > > >> I just tried to upload a new Haskell package and ran into some > difficulties. If I just try to upload, it fails and says I need to contact > somebody in the trustees group to be added to the Uploaders group. > >> If I try to upload a package candidate instead, it says Forbidden, No > access for this resource. > > > > You need a Hackage account for both candidate upload and final release. > > > >> Also, I have a Hackage account and I can get to the account management > page, and generate an auth key, but I don't know what I can do with that. > > > > It's a long time ago that I registered my account, but maybe your > account must be added to a special group, the group Uploaders. > > > > I do not need an auth key for uploading, just user name and password. I > use 'cabal upload' for Hackage releases. > > > >> It seems the package candidate feature is the way to go, since > >> direct uploads are irreversible and more difficult to manage. > > > > right > > > > You can watch and check the appearance of your package candidate at > Hackage before publishing. You can even use the uploaded candidate > temporarily in your project by adding its tarball URL to > cabal.project.local or stack.yaml. > > _______________________________________________ > > 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 benjamin.redelings at gmail.com Thu May 4 15:50:02 2023 From: benjamin.redelings at gmail.com (Benjamin Redelings) Date: Thu, 4 May 2023 11:50:02 -0400 Subject: [Haskell-cafe] pretty-printing with fixed indentation increase per sub-structure In-Reply-To: References: Message-ID: Hi, 1. Have you seen the "prettiest printer" article here? https://jyp.github.io/posts/towards-the-prettiest-printer.html It says: > Wadler’s design fares somewhat better. It does not suffer from the > above problem… /by default/. That is, it lacks the capability to > express that sub-documents should be vertically aligned — compositionally. > ... > > * > > Objection 2: /Leijen’s extension of Wadler’s design solves the > issue: it provides an |align| combinator./ > A package based on (a later version of) the design in this article is available here: https://hackage.haskell.org/package/pretty-compact This claims to be more ideal ("Prettiest") than either the Hughes ("Pretty") or Wadler ("Prettier") printers.  I think it uses dynamic programming to avoid being too slow.  If I understand correctly, GHC internally uses a version of the Hughes pretty printer, not the Wadler-Leijen one. 2. Doesn't the wl-print package already have a `nest` combinator? https://hackage.haskell.org/package/wl-pprint-1.2.1/docs/Text-PrettyPrint-Leijen.html It also has the `align` combinator.  If I remember correctly, these are part of the Leijen extension to Wadler.  Are these not enough to get the behavior that you want? 3. Have you seen hindent?  It has a module called HIndent.Pretty that might be relevant to laying out Haskell source. Does that help? -BenRI On 4/17/23 6:50 AM, Johannes Waldmann wrote: > Dear Cafe, > > I was looking for a way to pretty-print Haskell literals > (with lists, tuples, records with named and positional notation) > like this example > > ( Leftist >     { tree = Branch >         { left = Branch { left = Leaf, key = 4, right = Leaf } >         , key = 3 >         , right = Leaf >         } >     , refs = listToFM [ ( Ref 13, [ 0 ] ), ( Ref 17, [ ] ) ] >     } > , [ Any, Any ] > ) > > for each sub-structure, the indentation level > (for the following lines) should increase - by a _fixed_ amount. > in the above example: line break after "tree = Branch". > But (missing from this example), line break _before_ > the list starts in "{ foo = [ 42 , ... ] ... }". > > I found this impossible to do with wl-pprint > but perhaps I did not try hard enough. > > > Instead, I "invented" combinators `nest` and `skip` > and made this prototypical implementation > https://gitlab.imn.htwk-leipzig.de/autotool/all0/-/blob/master/todoc/src/Text/PrettyPrint/Dent.hs >  (it has some explanatory text at the top) > see also https://gitlab.imn.htwk-leipzig.de/autotool/all0/-/issues/960 > > but certainly this cannot be a new idea. > > > While I do like the semantics (in the context of my application), > I don't like the performance of my implementation. > What am I doing wrong? > It's just updating indentation level and current position, > this should not take any time at all? > > Of course, it would be best if I don't need the implementation at all - > if the effect could be achieved via some combinators in > established libraries (that have optimized implementation). > > Any pointers appreciated. > > > Best regards - J. > _______________________________________________ > 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 anthony.d.clayden at gmail.com Sat May 6 02:00:54 2023 From: anthony.d.clayden at gmail.com (Anthony Clayden) Date: Sat, 6 May 2023 14:00:54 +1200 Subject: [Haskell-cafe] [Haskell] The Point of this List Message-ID: Thanks Henning, I agree. o.p. Dominic on Haskell list > I have been subscribed to this list for over 20 years ... Well, yes 20+ years ago, Haskellers were a much smaller community; 'haskell' was the only list. If you want to understand the discussions around the 1998 standard for example, that's the place to look. 'haskell-cafe' has been going for at least most of that 20 years, and is the place for more free-flowing discussion. Increasingly, 'haskell' is restricted to low-volume announcements/not discussion. I'm surprised you hadn't noticed. AntC -------------- next part -------------- An HTML attachment was scrubbed... URL: From merijn at inconsistent.nl Mon May 8 07:38:25 2023 From: merijn at inconsistent.nl (Merijn Verstraaten) Date: Mon, 8 May 2023 09:38:25 +0200 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Message-ID: If I recall correctly, the account creation page mentions needing to mail the hackage admins, but I don't know if there's any further reminders afterwards. Cheers, Merijn > On 4 May 2023, at 17:32, Dominick Samperi wrote: > > Thanks for the feedback. It might be helpful to add this requirement to the Package upload page, instead of only displaying it after a failed upload. > > > > On Thu, May 4, 2023 at 4:23 AM Merijn Verstraaten wrote: > Unlike the "long time ago", when everyone would immediately get upload rights upon account creation, you now need to be manually added to the Uploaders group by mailing the hackage admin address. This due to spammers abusing hackage and uploading packages consisting solely of linkspam/advertisements. > > Cheers, > Merijn > > > On 4 May 2023, at 08:23, Henning Thielemann wrote: > > > > > > On Thu, 4 May 2023, Dominick Samperi wrote: > > > >> I just tried to upload a new Haskell package and ran into some difficulties. If I just try to upload, it fails and says I need to contact somebody in the trustees group to be added to the Uploaders group. > >> If I try to upload a package candidate instead, it says Forbidden, No access for this resource. > > > > You need a Hackage account for both candidate upload and final release. > > > >> Also, I have a Hackage account and I can get to the account management page, and generate an auth key, but I don't know what I can do with that. > > > > It's a long time ago that I registered my account, but maybe your account must be added to a special group, the group Uploaders. > > > > I do not need an auth key for uploading, just user name and password. I use 'cabal upload' for Hackage releases. > > > >> It seems the package candidate feature is the way to go, since > >> direct uploads are irreversible and more difficult to manage. > > > > right > > > > You can watch and check the appearance of your package candidate at Hackage before publishing. You can even use the uploaded candidate temporarily in your project by adding its tarball URL to cabal.project.local or stack.yaml. > > _______________________________________________ > > 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 david.feuer at gmail.com Tue May 9 05:26:06 2023 From: david.feuer at gmail.com (David Feuer) Date: Tue, 9 May 2023 01:26:06 -0400 Subject: [Haskell-cafe] Help with package/module naming Message-ID: I'm currently putting the finishing touches on the first version of a new priority queue package. It implements amortized-optimal priority queues and is intended to compete with the heaps package with a simpler, more compact, and hopefully faster implementation†. The main types are key-only and key-value priority queues, which I'm naming based on the conventions of the pqueue package: data MinQueue k data MinPQueue k a data MaxQueue k data MaxPQueue k a Additionally, the implementation uses underlying types with constant time insertion, logarithmic-time union, logarithmic time peekMin, and logarithmic time deleteMin: -- Key-value priority queues that are strict in both the key and the -- value. data MinPQueue k a -- Similar to the above, but associating -- two values with each key. The @a@ -- value is stored strictly and the @b@ value -- is stored lazily. data MinPQueue2 k a b So I have a few questions: 1. What should I name this package? 2. What should I name the modules containing the bootstrapped queues? 3. What should I name the modules containing the underlying oddly-strict queues? I don't know how many people will want to use them, but I figure they're probably just what's needed from time to time and it's better to let them loose than keep them under wraps. Finally, there is the question of how to expose internals. In addition to the queues above, with are all reasonable things for public consumption, there are modules implementing those, as well as a couple modules implementing helper types and such. I'm really no good at figuring out how to "lay out" modules in a package, so any advice would be greatly appreciated. † The heaps package uses bootstrapped skew binomial heaps (Brodal and Okasaki), achieving worst case constant-time union and peekMin and worst case logarithmic time deleteMin. The package I'm working on uses the same bootstrapping technique, but with a space-saving modification of Louis Wasserman's realization of Okasaki lazy binomial heap as the base priority queue. It achieves the same bounds, but union is only constant time in the (persistently) amortized sense; it degrades to logarithmic time in the worst case. In practice, this theoretical degradation likely doesn't matter, both because it's small and because GHC's garbage collection imposes occasional delays regardless. -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Tue May 9 07:55:45 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Tue, 9 May 2023 09:55:45 +0200 (CEST) Subject: [Haskell-cafe] Help with package/module naming In-Reply-To: References: Message-ID: On Tue, 9 May 2023, David Feuer wrote: > I'm currently putting the finishing touches on the first version of a new priority queue package. It > implements amortized-optimal priority queues and is intended to compete with the heaps package with > a simpler, more compact, and hopefully faster implementation†. The main types are key-only and > key-value priority queues, which I'm naming based on the conventions of the pqueue package: > data MinQueue k > data MinPQueue k a > data MaxQueue k > data MaxPQueue k a These are priority queues, not priority search queues, right? From Graham.Hutton at nottingham.ac.uk Wed May 10 07:04:47 2023 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Wed, 10 May 2023 07:04:47 +0000 Subject: [Haskell-cafe] Final Call for Papers: Functional Software Architecture - FP in the Large (** deadline 1st June **) In-Reply-To: References: Message-ID: Dear all, The first workshop on "Functional Software Architecture - FP in the Large” will be held in Seattle in Sept 2023, co-located with the ICFP conference. Please submit your best papers, experience reports, and architectural pearls on large-scale functional programming! The submission deadline 1st June 2023. Best wishes, Mike Sperber and Graham Hutton Program Chairs, FUNARCH 2023 ====================================================================== *** FUNARCH 2023 — FINAL CALL FOR PAPERS *** The First ACM SIGPLAN Workshop on Functional Software Architecture - FP in the Large 8th September 2023, Seattle, Washington, USA Co-located with ICFP 2023 https://tinyurl.com/FUNARCH-23 ====================================================================== TIMELINE: Paper submission 1st June 2023 Author notification 28th June 2023 Camera ready copy 18th July 2023 Workshop 8th Sept 2023 BACKGROUND: "Functional Software Architecture" refers to methods of construction and structure of large and long-lived software projects that are implemented in functional languages and released to real users, typically in industry. The goals for the workshop are: - To assemble a community interested in software architecture techniques and technologies specific to functional programming; - To identify, categorize, and document topics relevant to the field of functional software architecture; - To connect the functional programming community to the software architecture community to cross-pollinate between the two. The workshop follows on from the Functional Software Architecture open space that was held at ICFP 2022 in Slovenia. SCOPE: The workshop seeks submissions in a range of categories: - You're a member of the FP community and have thought about how to support programming in the large, for example by framing functional ideas in architectural terms or vice verse, comparing different languages in terms of their architectural capabilities, clarifying architectural roles played by formal methods, proof assistants and DSLs, or observing how functional concepts are used in other language and architecture communities. Great, submit a research paper! - You're a member of the architecture community, and have thought about how your discipline might help functional programmers, for example by applying domain-driven design, implementing hexagonal architecture, or designing self-contained systems. Excellent, submit a research paper! - You've worked on a large project using functional programming, and it's worked out well, or terribly, or a mix of both; bonus points for deriving architectural principles from your experience. Wonderful, submit an experience report! - You know a neat architectural idiom or pattern that may be useful to others developing large functional software systems. Fabulous, submit an architectural pearl! - You have something that doesn't fit the above categories, but that still relates to functional software architecture, such as something that can be written up, or that could be part of the workshop format like a panel debate or a fishbowl. Superb, submit to the open category! Research 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. Experience reports and architectural pearls need not necessarily report original research results. The key criterion for such papers is that they make a contribution from which others can benefit. It is not enough simply to describe a large software system, or to present ideas that are specific to a particular system. Open category submissions that are not intended for publication are not required to follow the formatting guidelines, and can submit in PDF, word or plain text format as preferred. If you are unsure whether your contribution is suitable, or if you need any kind of help with your submission, please email the program chairs at >. SUBMISSION: Papers must be submitted by 1st June 2023 using EasyChair, via the following link: https://tinyurl.com/FUNARCH23-submit Formatting: submissions intended for publication must be in PDF format and follow the ACM SIGPLAN style guidelines, using the acmart format and the sigplan sub-format. Please use the review option, as this enables line numbers for easy reference in reviews. For further details, see: https://tinyurl.com/sigplan-acmart If your submission is not a research paper, please mark this using a subtitle (Experience Report, Architectural Pearl, Open Category). Length: submissions must adhere to the limits specified below. However, there is no requirement or expectation that all pages are used, and authors are encouraged to strive for brevity. Research papers 5 to 12+ pages Architectural pearls 5 to 12 pages Experience reports 3 to 6 pages Open category 1 to 6 pages Publication: The proceedings of FUNARCH 2023 will be published in the ACM Digital Library, and authors of accepted papers are required to agree to one of the standard ACM licensing options. Accepted papers must be presented at the workshop by one of the authors, but in special cases we may consider remote presentation. The official publication date is the date the papers 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. PROGRAM CHAIRS: Mike Sperber Active Group, Germany Graham Hutton University of Nottingham, UK PROGRAM COMMITTEE: Joachim Breitner Germany Manuel Chakravarty Tweag & IOG, The Netherlands Ron Garcia University of British Columbia, Canada Debasish Ghosh LeadIQ, India Lars Hupel Giesecke+Devrient, Germany Andy Keep Meta, USA Shriram Krishnamurthi Brown University, USA Andres Löh Well-Typed, Germany Anil Madhavapeddy University of Cambridge, UK José Pedro Magalhães Standard Chartered, UK Simon Marlow Meta, UK Hannes Mehnert Robur, Germany Erik Meijer USA Ivan Perez KBR / NASA Ames Research Center, USA Stefanie Schirmer DuckDuckGo, Germany Perdita Stevens University of Edinburgh, UK Stefan Wehr Hochschule Offenburg, Germany Scott Wlaschin FPbridge, UK WORKSHOP VENUE: The workshop will be co-located with the ICFP 2023 conference at The Westin Seattle Hotel, Seattle, Washington, United States. ====================================================================== 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: From djsamperi at gmail.com Thu May 11 22:04:55 2023 From: djsamperi at gmail.com (Dominick Samperi) Date: Thu, 11 May 2023 18:04:55 -0400 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Message-ID: There must be a backlog of requests for uploading rights as I have not heard back for some time. On Mon, May 8, 2023 at 3:38 AM Merijn Verstraaten wrote: > If I recall correctly, the account creation page mentions needing to mail > the hackage admins, but I don't know if there's any further reminders > afterwards. > > Cheers, > Merijn > > > On 4 May 2023, at 17:32, Dominick Samperi wrote: > > > > Thanks for the feedback. It might be helpful to add this requirement to > the Package upload page, instead of only displaying it after a failed > upload. > > > > > > > > On Thu, May 4, 2023 at 4:23 AM Merijn Verstraaten < > merijn at inconsistent.nl> wrote: > > Unlike the "long time ago", when everyone would immediately get upload > rights upon account creation, you now need to be manually added to the > Uploaders group by mailing the hackage admin address. This due to spammers > abusing hackage and uploading packages consisting solely of > linkspam/advertisements. > > > > Cheers, > > Merijn > > > > > On 4 May 2023, at 08:23, Henning Thielemann < > lemming at henning-thielemann.de> wrote: > > > > > > > > > On Thu, 4 May 2023, Dominick Samperi wrote: > > > > > >> I just tried to upload a new Haskell package and ran into some > difficulties. If I just try to upload, it fails and says I need to contact > somebody in the trustees group to be added to the Uploaders group. > > >> If I try to upload a package candidate instead, it says Forbidden, No > access for this resource. > > > > > > You need a Hackage account for both candidate upload and final release. > > > > > >> Also, I have a Hackage account and I can get to the account > management page, and generate an auth key, but I don't know what I can do > with that. > > > > > > It's a long time ago that I registered my account, but maybe your > account must be added to a special group, the group Uploaders. > > > > > > I do not need an auth key for uploading, just user name and password. > I use 'cabal upload' for Hackage releases. > > > > > >> It seems the package candidate feature is the way to go, since > > >> direct uploads are irreversible and more difficult to manage. > > > > > > right > > > > > > You can watch and check the appearance of your package candidate at > Hackage before publishing. You can even use the uploaded candidate > temporarily in your project by adding its tarball URL to > cabal.project.local or stack.yaml. > > > _______________________________________________ > > > 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 olf at aatal-apotheke.de Fri May 12 21:09:46 2023 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Fri, 12 May 2023 23:09:46 +0200 Subject: [Haskell-cafe] type error when specializing lens zooms in ghc >= 9.0 Message-ID: <3a3ba5c235db4c827a2cfe2ac7abc83dadb41524.camel@aatal-apotheke.de> Dear Cafe, I'm an infrequent lens user so please forgive me if the below problem has a trivial solution. For a long time the documentation of Control.Lens.Zoom has been claiming that 'zoom' and 'magnify' can be specialized to the following types. {-# LANGUAGE RankNTypes #-} -- Type error with GHC 9.0.2 or 9.2.7, okay with GHC 8.8.4 import Control.Lens.Zoom (zoom,magnify) import Control.Lens.Type (Lens') import Control.Monad.RWS (RWS) zoomRWS :: Monoid w => Lens' s s' -> RWS r w s' a -> RWS r w s a zoomRWS = zoom magnifyRWS :: Monoid w => Lens' r r' -> RWS r' w s a -> RWS r w s a magnifyRWS = magnify Indeed GHC 8.8.4 compiles this happily (on lens-4.18.1), but 9.0.2 (on lens-5.0.1) throws nearly undecipherable errors, claiming that Lens' can not be matched with some more specialized type involving Magnified and LensLike. The source of Control.Lens.Zoom does not differ substantially between 4.18.1 and 5.0.1 so my guess is it is a type checker issue. Can anyone explain? On which bug tracker should I raise this issue, if it is indeed a valid one? (I pulled the above versions from stackage lts-16.31, -19.5 and -20.20, respectively and compiled with stack.) Thanks Olaf From allbery.b at gmail.com Fri May 12 21:13:22 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Fri, 12 May 2023 17:13:22 -0400 Subject: [Haskell-cafe] type error when specializing lens zooms in ghc >= 9.0 In-Reply-To: <3a3ba5c235db4c827a2cfe2ac7abc83dadb41524.camel@aatal-apotheke.de> References: <3a3ba5c235db4c827a2cfe2ac7abc83dadb41524.camel@aatal-apotheke.de> Message-ID: My first suspicion would be simplified subsumption. Try eta-expanding them. On Fri, May 12, 2023 at 5:10 PM Olaf Klinke wrote: > > Dear Cafe, > > I'm an infrequent lens user so please forgive me if the below problem > has a trivial solution. > > For a long time the documentation of Control.Lens.Zoom has been > claiming that 'zoom' and 'magnify' can be specialized to the following > types. > > {-# LANGUAGE RankNTypes #-} > -- Type error with GHC 9.0.2 or 9.2.7, okay with GHC 8.8.4 > import Control.Lens.Zoom (zoom,magnify) > import Control.Lens.Type (Lens') > import Control.Monad.RWS (RWS) > zoomRWS :: Monoid w => Lens' s s' -> RWS r w s' a -> RWS r w s a > zoomRWS = zoom > magnifyRWS :: Monoid w => Lens' r r' -> RWS r' w s a -> RWS r w s a > magnifyRWS = magnify > > Indeed GHC 8.8.4 compiles this happily (on lens-4.18.1), but 9.0.2 (on > lens-5.0.1) throws nearly undecipherable errors, claiming that Lens' > can not be matched with some more specialized type involving Magnified > and LensLike. > The source of Control.Lens.Zoom does not differ substantially between > 4.18.1 and 5.0.1 so my guess is it is a type checker issue. Can anyone > explain? On which bug tracker should I raise this issue, if it is > indeed a valid one? > (I pulled the above versions from stackage lts-16.31, -19.5 and -20.20, > respectively and compiled with stack.) > > Thanks > Olaf > > _______________________________________________ > 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 From carter.schonwald at gmail.com Sat May 13 16:03:16 2023 From: carter.schonwald at gmail.com (Carter Schonwald) Date: Sat, 13 May 2023 12:03:16 -0400 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Message-ID: What email address did you use? On Thu, May 11, 2023 at 6:05 PM Dominick Samperi wrote: > There must be a backlog of requests for uploading rights as I have not > heard back for some time. > > On Mon, May 8, 2023 at 3:38 AM Merijn Verstraaten > wrote: > >> If I recall correctly, the account creation page mentions needing to mail >> the hackage admins, but I don't know if there's any further reminders >> afterwards. >> >> Cheers, >> Merijn >> >> > On 4 May 2023, at 17:32, Dominick Samperi wrote: >> > >> > Thanks for the feedback. It might be helpful to add this requirement to >> the Package upload page, instead of only displaying it after a failed >> upload. >> > >> > >> > >> > On Thu, May 4, 2023 at 4:23 AM Merijn Verstraaten < >> merijn at inconsistent.nl> wrote: >> > Unlike the "long time ago", when everyone would immediately get upload >> rights upon account creation, you now need to be manually added to the >> Uploaders group by mailing the hackage admin address. This due to spammers >> abusing hackage and uploading packages consisting solely of >> linkspam/advertisements. >> > >> > Cheers, >> > Merijn >> > >> > > On 4 May 2023, at 08:23, Henning Thielemann < >> lemming at henning-thielemann.de> wrote: >> > > >> > > >> > > On Thu, 4 May 2023, Dominick Samperi wrote: >> > > >> > >> I just tried to upload a new Haskell package and ran into some >> difficulties. If I just try to upload, it fails and says I need to contact >> somebody in the trustees group to be added to the Uploaders group. >> > >> If I try to upload a package candidate instead, it says Forbidden, >> No access for this resource. >> > > >> > > You need a Hackage account for both candidate upload and final >> release. >> > > >> > >> Also, I have a Hackage account and I can get to the account >> management page, and generate an auth key, but I don't know what I can do >> with that. >> > > >> > > It's a long time ago that I registered my account, but maybe your >> account must be added to a special group, the group Uploaders. >> > > >> > > I do not need an auth key for uploading, just user name and password. >> I use 'cabal upload' for Hackage releases. >> > > >> > >> It seems the package candidate feature is the way to go, since >> > >> direct uploads are irreversible and more difficult to manage. >> > > >> > > right >> > > >> > > You can watch and check the appearance of your package candidate at >> Hackage before publishing. You can even use the uploaded candidate >> temporarily in your project by adding its tarball URL to >> cabal.project.local or stack.yaml. >> > > _______________________________________________ >> > > Haskell-Cafe mailing list >> > > To (un)subscribe, modify options or view archives go to: >> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >> > > Only members subscribed via the mailman list are allowed to post. >> > >> >> _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post. -------------- next part -------------- An HTML attachment was scrubbed... URL: From djsamperi at gmail.com Sat May 13 19:20:06 2023 From: djsamperi at gmail.com (Dominick Samperi) Date: Sat, 13 May 2023 15:20:06 -0400 Subject: [Haskell-cafe] Contributing packages? In-Reply-To: References: <2e4f8038-1d23-6966-2f37-ed31d844b8e9@henning-thielemann.de> <0EE05F34-E424-41FD-AFC4-EE0B9DA537B0@inconsistent.nl> Message-ID: Hello Carter, I should have been more patient. I heard back from hackage-trustees at haskell.org and managed to publish my package https://hackage.haskell.org/package/mathlist Thanks, Dominick On Sat, May 13, 2023 at 12:03 PM Carter Schonwald < carter.schonwald at gmail.com> wrote: > What email address did you use? > > On Thu, May 11, 2023 at 6:05 PM Dominick Samperi > wrote: > >> There must be a backlog of requests for uploading rights as I have not >> heard back for some time. >> >> On Mon, May 8, 2023 at 3:38 AM Merijn Verstraaten >> wrote: >> >>> If I recall correctly, the account creation page mentions needing to >>> mail the hackage admins, but I don't know if there's any further reminders >>> afterwards. >>> >>> Cheers, >>> Merijn >>> >>> > On 4 May 2023, at 17:32, Dominick Samperi wrote: >>> > >>> > Thanks for the feedback. It might be helpful to add this requirement >>> to the Package upload page, instead of only displaying it after a failed >>> upload. >>> > >>> > >>> > >>> > On Thu, May 4, 2023 at 4:23 AM Merijn Verstraaten < >>> merijn at inconsistent.nl> wrote: >>> > Unlike the "long time ago", when everyone would immediately get upload >>> rights upon account creation, you now need to be manually added to the >>> Uploaders group by mailing the hackage admin address. This due to spammers >>> abusing hackage and uploading packages consisting solely of >>> linkspam/advertisements. >>> > >>> > Cheers, >>> > Merijn >>> > >>> > > On 4 May 2023, at 08:23, Henning Thielemann < >>> lemming at henning-thielemann.de> wrote: >>> > > >>> > > >>> > > On Thu, 4 May 2023, Dominick Samperi wrote: >>> > > >>> > >> I just tried to upload a new Haskell package and ran into some >>> difficulties. If I just try to upload, it fails and says I need to contact >>> somebody in the trustees group to be added to the Uploaders group. >>> > >> If I try to upload a package candidate instead, it says Forbidden, >>> No access for this resource. >>> > > >>> > > You need a Hackage account for both candidate upload and final >>> release. >>> > > >>> > >> Also, I have a Hackage account and I can get to the account >>> management page, and generate an auth key, but I don't know what I can do >>> with that. >>> > > >>> > > It's a long time ago that I registered my account, but maybe your >>> account must be added to a special group, the group Uploaders. >>> > > >>> > > I do not need an auth key for uploading, just user name and >>> password. I use 'cabal upload' for Hackage releases. >>> > > >>> > >> It seems the package candidate feature is the way to go, since >>> > >> direct uploads are irreversible and more difficult to manage. >>> > > >>> > > right >>> > > >>> > > You can watch and check the appearance of your package candidate at >>> Hackage before publishing. You can even use the uploaded candidate >>> temporarily in your project by adding its tarball URL to >>> cabal.project.local or stack.yaml. >>> > > _______________________________________________ >>> > > Haskell-Cafe mailing list >>> > > To (un)subscribe, modify options or view archives go to: >>> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >>> > > Only members subscribed via the mailman list are allowed to post. >>> > >>> >>> _______________________________________________ >> Haskell-Cafe mailing list >> To (un)subscribe, modify options or view archives go to: >> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe >> Only members subscribed via the mailman list are allowed to post. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From george.colpitts at gmail.com Sun May 14 18:43:05 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Sun, 14 May 2023 15:43:05 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? Message-ID: Is anybody on 9.6.1 having problems profiling on a Mac? As I reported in https://gitlab.haskell.org/ghc/ghc/-/issues/23211 ghc -prof -fprof-auto hello.hs where the file hello.hs consists of the line: main = print "hello" gets the error: Could not find module ‘Prelude’ Perhaps you haven't installed the "p_dyn" libraries for package ‘base-4.18.0.0’? It seems to me like a regression of the closed bug https://gitlab.haskell.org/ghc/ghc/-/issues/20707. Thanks George -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Sun May 14 19:47:28 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Sun, 14 May 2023 21:47:28 +0200 (CEST) Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: On Sun, 14 May 2023, George Colpitts wrote: > gets the error: > > Could not find module ‘Prelude’ > >  Perhaps you haven't installed the "p_dyn" libraries for package ‘base-4.18.0.0’? On Debian Linux the probable cause would be that you have not installed ghc-dynamic. Is there a package missing on your Mac installation? From george.colpitts at gmail.com Mon May 15 11:35:48 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 08:35:48 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: Thanks Henning. I just installed ghc 9.6.1. When I try ghc-dynamic I get $ cabal install --lib ghc-dynamic Error: cabal: Unknown package "ghc-dynamic". On Sun, May 14, 2023 at 4:47 PM Henning Thielemann < lemming at henning-thielemann.de> wrote: > > On Sun, 14 May 2023, George Colpitts wrote: > > > gets the error: > > > > Could not find module ‘Prelude’ > > > > Perhaps you haven't installed the "p_dyn" libraries for package > ‘base-4.18.0.0’? > > On Debian Linux the probable cause would be that you have not installed > ghc-dynamic. Is there a package missing on your Mac installation? -------------- next part -------------- An HTML attachment was scrubbed... URL: From allbery.b at gmail.com Mon May 15 11:38:29 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Mon, 15 May 2023 07:38:29 -0400 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: `ghc-dynamic` would be an OS package, not cabal. On Mon, May 15, 2023 at 7:36 AM George Colpitts wrote: > > Thanks Henning. I just installed ghc 9.6.1. > > When I try ghc-dynamic I get > > $ cabal install --lib ghc-dynamic > Error: cabal: Unknown package "ghc-dynamic". > > > On Sun, May 14, 2023 at 4:47 PM Henning Thielemann wrote: >> >> >> On Sun, 14 May 2023, George Colpitts wrote: >> >> > gets the error: >> > >> > Could not find module ‘Prelude’ >> > >> > Perhaps you haven't installed the "p_dyn" libraries for package ‘base-4.18.0.0’? >> >> On Debian Linux the probable cause would be that you have not installed >> ghc-dynamic. Is there a package missing on your Mac installation? > > _______________________________________________ > 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 From george.colpitts at gmail.com Mon May 15 11:48:37 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 08:48:37 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: Thanks Brandon, I'm on a Mac. Do you know how I should install it? On Mon, May 15, 2023 at 8:38 AM Brandon Allbery wrote: > `ghc-dynamic` would be an OS package, not cabal. > > On Mon, May 15, 2023 at 7:36 AM George Colpitts > wrote: > > > > Thanks Henning. I just installed ghc 9.6.1. > > > > When I try ghc-dynamic I get > > > > $ cabal install --lib ghc-dynamic > > Error: cabal: Unknown package "ghc-dynamic". > > > > > > On Sun, May 14, 2023 at 4:47 PM Henning Thielemann < > lemming at henning-thielemann.de> wrote: > >> > >> > >> On Sun, 14 May 2023, George Colpitts wrote: > >> > >> > gets the error: > >> > > >> > Could not find module ‘Prelude’ > >> > > >> > Perhaps you haven't installed the "p_dyn" libraries for > package ‘base-4.18.0.0’? > >> > >> On Debian Linux the probable cause would be that you have not installed > >> ghc-dynamic. Is there a package missing on your Mac installation? > > > > _______________________________________________ > > 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 allbery.b at gmail.com Mon May 15 11:52:39 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Mon, 15 May 2023 07:52:39 -0400 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: If you installed ghc via ghcup, you shouldn't need it. If you installed via Homebrew, I don't know if they have a separate package for the dynamic libs or what it would be called; I use Linux and ghcup, and if I'd used the Ubuntu packages it would be "ghc-prof". On Mon, May 15, 2023 at 7:49 AM George Colpitts wrote: > > Thanks Brandon, I'm on a Mac. Do you know how I should install it? > > On Mon, May 15, 2023 at 8:38 AM Brandon Allbery wrote: >> >> `ghc-dynamic` would be an OS package, not cabal. >> >> On Mon, May 15, 2023 at 7:36 AM George Colpitts >> wrote: >> > >> > Thanks Henning. I just installed ghc 9.6.1. >> > >> > When I try ghc-dynamic I get >> > >> > $ cabal install --lib ghc-dynamic >> > Error: cabal: Unknown package "ghc-dynamic". >> > >> > >> > On Sun, May 14, 2023 at 4:47 PM Henning Thielemann wrote: >> >> >> >> >> >> On Sun, 14 May 2023, George Colpitts wrote: >> >> >> >> > gets the error: >> >> > >> >> > Could not find module ‘Prelude’ >> >> > >> >> > Perhaps you haven't installed the "p_dyn" libraries for package ‘base-4.18.0.0’? >> >> >> >> On Debian Linux the probable cause would be that you have not installed >> >> ghc-dynamic. Is there a package missing on your Mac installation? >> > >> > _______________________________________________ >> > 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 -- brandon s allbery kf8nh allbery.b at gmail.com From george.colpitts at gmail.com Mon May 15 12:11:24 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 09:11:24 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: Forgot to add that my current workaround is to compile with "-static -package-env=-" i.e. ghc -static -package-env=- -prof -fprof-auto hello.hs Adding just -package-env=- i.e. gives me the same error as compiling without it. ghc -package-env=- -prof -fprof-auto hello.hs [1 of 2] Compiling Main ( hello.hs, hello.o ) hello.hs:1:1: error: Could not find module ‘Prelude’ Perhaps you haven't installed the "p_dyn" libraries for package ‘base-4.18.0.0’? Use -v (or `:set -v` in ghci) to see a list of the files searched for. | 1 | | ^ Adding just -static gives ghc -static -prof -fprof-auto hello.hs Loaded package environment from /Users/gcolpitts/.ghc/x86_64-darwin-9.6.1/environments/default [1 of 2] Compiling Main ( hello.hs, hello.o ) [Missing object file] [2 of 2] Linking hello ld: warning: directory not found for option '-L/opt/local/lib/' ld: library not found for -lHStxmth-0.12.7.1-f954854b_p clang: error: linker command failed with exit code 1 (use -v to see invocation) ghc-9.6.1: `gcc' failed in phase `Linker'. (Exit code: 1) I can't find any doc saying that -static is required for profiling on the Mac but perhaps that is the case? On Sun, May 14, 2023 at 3:43 PM George Colpitts wrote: > Is anybody on 9.6.1 having problems profiling on a Mac? As I reported in > https://gitlab.haskell.org/ghc/ghc/-/issues/23211 > > ghc -prof -fprof-auto hello.hs > > where the file hello.hs consists of the line: > > main = print "hello" > > gets the error: > > Could not find module ‘Prelude’ > > Perhaps you haven't installed the "p_dyn" libraries for package > ‘base-4.18.0.0’? > > > It seems to me like a regression of the closed bug > https://gitlab.haskell.org/ghc/ghc/-/issues/20707. > > Thanks > George > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From george.colpitts at gmail.com Mon May 15 12:14:24 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 09:14:24 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: 9.6.1 isn't available on ghcup. Homebrew doesn't have any packages ghc-prof or ghc-dynamic. Thanks George On Mon, May 15, 2023 at 8:52 AM Brandon Allbery wrote: > If you installed ghc via ghcup, you shouldn't need it. If you > installed via Homebrew, I don't know if they have a separate package > for the dynamic libs or what it would be called; I use Linux and > ghcup, and if I'd used the Ubuntu packages it would be "ghc-prof". > > On Mon, May 15, 2023 at 7:49 AM George Colpitts > wrote: > > > > Thanks Brandon, I'm on a Mac. Do you know how I should install it? > > > > On Mon, May 15, 2023 at 8:38 AM Brandon Allbery > wrote: > >> > >> `ghc-dynamic` would be an OS package, not cabal. > >> > >> On Mon, May 15, 2023 at 7:36 AM George Colpitts > >> wrote: > >> > > >> > Thanks Henning. I just installed ghc 9.6.1. > >> > > >> > When I try ghc-dynamic I get > >> > > >> > $ cabal install --lib ghc-dynamic > >> > Error: cabal: Unknown package "ghc-dynamic". > >> > > >> > > >> > On Sun, May 14, 2023 at 4:47 PM Henning Thielemann < > lemming at henning-thielemann.de> wrote: > >> >> > >> >> > >> >> On Sun, 14 May 2023, George Colpitts wrote: > >> >> > >> >> > gets the error: > >> >> > > >> >> > Could not find module ‘Prelude’ > >> >> > > >> >> > Perhaps you haven't installed the "p_dyn" libraries for > package ‘base-4.18.0.0’? > >> >> > >> >> On Debian Linux the probable cause would be that you have not > installed > >> >> ghc-dynamic. Is there a package missing on your Mac installation? > >> > > >> > _______________________________________________ > >> > 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 > > > > -- > brandon s allbery kf8nh > allbery.b at gmail.com > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Mon May 15 13:26:24 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Mon, 15 May 2023 15:26:24 +0200 (CEST) Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: <71cd4a8f-a7e8-58f5-a79-8eb7d779a3d8@henning-thielemann.de> On Mon, 15 May 2023, George Colpitts wrote: > 9.6.1 isn't available on ghcup. Homebrew doesn't have any packages ghc-prof or ghc-dynamic. I made a mistake. Brandon is right: The package is called ghc-prof on Debian/Ubuntu, whereas ghc-dynamic is for the dyn object files. From olf at aatal-apotheke.de Mon May 15 15:06:30 2023 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Mon, 15 May 2023 17:06:30 +0200 Subject: [Haskell-cafe] type error when specializing lens zooms in ghc >= 9.0 In-Reply-To: References: <3a3ba5c235db4c827a2cfe2ac7abc83dadb41524.camel@aatal-apotheke.de> Message-ID: <63cb8f6f43bd4cd385e46493a6176b7cfb6d3aeb.camel@aatal-apotheke.de> On Fri, 2023-05-12 at 17:13 -0400, Brandon Allbery wrote: > My first suspicion would be simplified subsumption. Try eta-expanding them. > Indeed, the eta-expanded versions do compile with GHC >= 9. Now I remember that I've fallen into a similar trap before [1] (and Brandon offered the right hint back then, too. Thanks, Brandon!) So let me re-cap: (1) Haskell is not a category: there are types a, b, c  and morphisms f :: a -> b, g :: b -> c such that g.f is not a morphism. (2) Haskell is not a lambda calculus [2]: There are terms f such that  \x -> f x  belongs to the calculus but f does not. Personally, I would already call the situation improved when the compiler instead of Brandon could tell me the fix. From the discussion [3]: > The most interesting thing I've learned from the lengthy threads, > along with deficiencies in the testing process for ecosystem > breakage, is how much absolute confusion there is over how rank-n- > types work, and the limitations and complexities of algorithms > pertaining to them. Now that they are in widespread use and on by > default in ghc, it seems like an important case where user education > is warranted. I'd love to be educated. And I'd be very pleased if helpful compiler error messages were the first entry point for that, so that I can spare the patient and helpful Haskell Cafe members some time. Olaf [1] https://mail.haskell.org/pipermail/haskell-cafe/2023-February/135903.html [2] https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0287-simplify-subsumption.rst#costs-and-drawbacks [3] https://github.com/ghc-proposals/ghc-proposals/pull/287 that apparently I have not managed to form an in > On Fri, May 12, 2023 at 5:10 PM Olaf Klinke wrote: > > > > Dear Cafe, > > > > I'm an infrequent lens user so please forgive me if the below problem > > has a trivial solution. > > > > For a long time the documentation of Control.Lens.Zoom has been > > claiming that 'zoom' and 'magnify' can be specialized to the following > > types. > > > > {-# LANGUAGE RankNTypes #-} > > -- Type error with GHC 9.0.2 or 9.2.7, okay with GHC 8.8.4 > > import Control.Lens.Zoom (zoom,magnify) > > import Control.Lens.Type (Lens') > > import Control.Monad.RWS (RWS) > > zoomRWS :: Monoid w => Lens' s s' -> RWS r w s' a -> RWS r w s a > > zoomRWS = zoom > > magnifyRWS :: Monoid w => Lens' r r' -> RWS r' w s a -> RWS r w s a > > magnifyRWS = magnify > > > > Indeed GHC 8.8.4 compiles this happily (on lens-4.18.1), but 9.0.2 (on > > lens-5.0.1) throws nearly undecipherable errors, claiming that Lens' > > can not be matched with some more specialized type involving Magnified > > and LensLike. > > The source of Control.Lens.Zoom does not differ substantially between > > 4.18.1 and 5.0.1 so my guess is it is a type checker issue. Can anyone > > explain? On which bug tracker should I raise this issue, if it is > > indeed a valid one? > > (I pulled the above versions from stackage lts-16.31, -19.5 and -20.20, > > respectively and compiled with stack.) > > > > Thanks > > Olaf > > > > _______________________________________________ > > 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 george.colpitts at gmail.com Mon May 15 15:15:54 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 12:15:54 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: Thanks for everybody's help, I have closed the issue . Sorry for bothering everyone. As I wrote in the bug: @adamse , @mpickering . You are right, there is something wrong about my environment file default. When I remove it I can compile with ghc -static -prof -fprof-auto hello.hs The need for -static is not documented as far as I know so I will file a doc bug. My apologies for not debugging this earlier. I will keep an eye out to see when an environment file gets created. Thanks again ! On Mon, May 15, 2023 at 9:11 AM George Colpitts wrote: > Forgot to add that my current workaround is to compile with "-static > -package-env=-" i.e. > > ghc -static -package-env=- -prof -fprof-auto hello.hs > > > Adding just -package-env=- i.e. gives me the same error as compiling > without it. > > ghc -package-env=- -prof -fprof-auto hello.hs > [1 of 2] Compiling Main ( hello.hs, hello.o ) > > hello.hs:1:1: error: > Could not find module ‘Prelude’ > Perhaps you haven't installed the "p_dyn" libraries for package > ‘base-4.18.0.0’? > Use -v (or `:set -v` in ghci) to see a list of the files searched for. > | > 1 | > | ^ > > > Adding just -static gives > > ghc -static -prof -fprof-auto hello.hs > Loaded package environment from > /Users/gcolpitts/.ghc/x86_64-darwin-9.6.1/environments/default > [1 of 2] Compiling Main ( hello.hs, hello.o ) [Missing object > file] > [2 of 2] Linking hello > ld: warning: directory not found for option '-L/opt/local/lib/' > ld: library not found for -lHStxmth-0.12.7.1-f954854b_p > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > ghc-9.6.1: `gcc' failed in phase `Linker'. (Exit code: 1) > > > I can't find any doc saying that -static is required for profiling on the > Mac but perhaps that is the case? > > > On Sun, May 14, 2023 at 3:43 PM George Colpitts > wrote: > >> Is anybody on 9.6.1 having problems profiling on a Mac? As I reported in >> https://gitlab.haskell.org/ghc/ghc/-/issues/23211 >> >> ghc -prof -fprof-auto hello.hs >> >> where the file hello.hs consists of the line: >> >> main = print "hello" >> >> gets the error: >> >> Could not find module ‘Prelude’ >> >> Perhaps you haven't installed the "p_dyn" libraries for package >> ‘base-4.18.0.0’? >> >> >> It seems to me like a regression of the closed bug >> https://gitlab.haskell.org/ghc/ghc/-/issues/20707. >> >> Thanks >> George >> >> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From icfp.publicity at googlemail.com Mon May 15 17:57:44 2023 From: icfp.publicity at googlemail.com (ICFP Publicity) Date: Tue, 16 May 2023 01:57:44 +0800 Subject: [Haskell-cafe] ICFP 2023: Call for Tutorial, Panel, and Discussion Proposals Message-ID: ICFP 2023 CALL FOR TUTORIAL, PANEL, AND DISCUSSION PROPOSALS 28th ACM SIGPLAN International Conference on Functional Programming September 4 - 9, 2023 Seattle, WA, USA https://icfp23.sigplan.org/ The 28th ACM SIGPLAN International Conference on Functional Programming will be held in Seattle, WA, USA on September 4 - 9, 2023, with the option of virtual participation. ICFP provides a forum for researchers and developers to hear about the latest work on the design, implementations, principles, and uses of functional programming. Proposals are invited for tutorials, lasting approximately 3 hours each, to be presented during ICFP and its co-located workshops and other events. The tutorials may target an audience who is interested in commercial uses of functional programming, but we also welcome tutorials whose primary audience is researchers rather than practitioners. Tutorials may focus either on a concrete technology or on a theoretical or mathematical tool. Ideally, tutorials will have a concrete result, such as "Learn to do X with Y" rather than "Learn language Y". Just like last year, following the success of the #ShutDownPL event, we are also inviting proposals for panels and discussions on topics of broader interest to the PL community. Tutorials, panels, and discussions may occur before or after ICFP, co-located with the associated workshops, on September 4 or September 8-9. ---------------------------------------------------------------------- Submission details Deadline for submission: May 23rd, 2023 Notification of acceptance: May 26th, 2023 Prospective organizers of tutorials are invited to submit a completed tutorial proposal form in plain text format to the ICFP 2023 workshop co-chairs (Arthur Azevedo de Amorim and Yannick Forster), via email to icfp-workshops-2023 AT googlegroups.com by May 23rd, 2023. Please note that this is a firm deadline. The proposal form is available at: http://www.icfpconference.org/icfp2023-files/icfp23-panel-form.txt http://www.icfpconference.org/icfp2023-files/icfp23-tutorials-form.txt ---------------------------------------------------------------------- Selection committee The proposals will be evaluated by a committee comprising the following members of the ICFP 2023 organizing committee, together with the members of the SIGPLAN executive committee. Workshop Co-Chair: Arthur Azevedo de Amorim (Boston University) Workshop Co-Chair: Yannick Forster (Inria Nantes) General Chair: Nikhil Swamy (Microsoft Research) Program Chair: Sam Lindley (University of Edinburgh) ---------------------------------------------------------------------- Further information Any queries should be addressed to the workshop co-chairs (Arthur Azevedo de Amorim and Yannick Forster), via email to icfp-workshops-2023 AT googlegroups.com From george.colpitts at gmail.com Mon May 15 19:15:51 2023 From: george.colpitts at gmail.com (George Colpitts) Date: Mon, 15 May 2023 16:15:51 -0300 Subject: [Haskell-cafe] Is anybody on 9.6.1 having problems profiling on a Mac? In-Reply-To: References: Message-ID: FWIW the environments file causing my problem is created by "cabal install --lib ..." On Mon, May 15, 2023 at 12:15 PM George Colpitts wrote: > Thanks for everybody's help, I have closed the issue > . Sorry for bothering > everyone. As I wrote in the bug: > > @adamse , @mpickering . You are > right, there is something wrong about my environment file default. When I > remove it I can compile with > > ghc -static -prof -fprof-auto hello.hs > > The need for -static is not documented as far as I know so I will file a > doc bug. My apologies for not debugging this earlier. I will keep an eye > out to see when an environment file gets created. Thanks again ! > > > > > On Mon, May 15, 2023 at 9:11 AM George Colpitts > wrote: > >> Forgot to add that my current workaround is to compile with "-static >> -package-env=-" i.e. >> >> ghc -static -package-env=- -prof -fprof-auto hello.hs >> >> >> Adding just -package-env=- i.e. gives me the same error as compiling >> without it. >> >> ghc -package-env=- -prof -fprof-auto hello.hs >> [1 of 2] Compiling Main ( hello.hs, hello.o ) >> >> hello.hs:1:1: error: >> Could not find module ‘Prelude’ >> Perhaps you haven't installed the "p_dyn" libraries for package >> ‘base-4.18.0.0’? >> Use -v (or `:set -v` in ghci) to see a list of the files searched for. >> | >> 1 | >> | ^ >> >> >> Adding just -static gives >> >> ghc -static -prof -fprof-auto hello.hs >> Loaded package environment from >> /Users/gcolpitts/.ghc/x86_64-darwin-9.6.1/environments/default >> [1 of 2] Compiling Main ( hello.hs, hello.o ) [Missing object >> file] >> [2 of 2] Linking hello >> ld: warning: directory not found for option '-L/opt/local/lib/' >> ld: library not found for -lHStxmth-0.12.7.1-f954854b_p >> clang: error: linker command failed with exit code 1 (use -v to see >> invocation) >> ghc-9.6.1: `gcc' failed in phase `Linker'. (Exit code: 1) >> >> >> I can't find any doc saying that -static is required for profiling on the >> Mac but perhaps that is the case? >> >> >> On Sun, May 14, 2023 at 3:43 PM George Colpitts < >> george.colpitts at gmail.com> wrote: >> >>> Is anybody on 9.6.1 having problems profiling on a Mac? As I reported in >>> https://gitlab.haskell.org/ghc/ghc/-/issues/23211 >>> >>> ghc -prof -fprof-auto hello.hs >>> >>> where the file hello.hs consists of the line: >>> >>> main = print "hello" >>> >>> gets the error: >>> >>> Could not find module ‘Prelude’ >>> >>> Perhaps you haven't installed the "p_dyn" libraries for package >>> ‘base-4.18.0.0’? >>> >>> >>> It seems to me like a regression of the closed bug >>> https://gitlab.haskell.org/ghc/ghc/-/issues/20707. >>> >>> Thanks >>> George >>> >>> >>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From david.feuer at gmail.com Mon May 15 20:52:41 2023 From: david.feuer at gmail.com (David Feuer) Date: Mon, 15 May 2023 16:52:41 -0400 Subject: [Haskell-cafe] QuickCheck update Message-ID: The latest QuickCheck release was uploaded to Hackage on 2020-11-14. There have been multiple commits to the master branch since then. konsumlamm opened an issue on 2023-03-10* requesting a new release. You responded positively, but there has been no visible progress towards that goal. Does QuickCheck need additional maintainers? * https://github.com/nick8325/quickcheck/issues/351 From david.feuer at gmail.com Mon May 15 21:15:22 2023 From: david.feuer at gmail.com (David Feuer) Date: Mon, 15 May 2023 17:15:22 -0400 Subject: [Haskell-cafe] Help with package/module naming In-Reply-To: References: Message-ID: Sorry I missed your message. Yes, these are priority queues. I don't know of any particularly interesting ways to implement priority search queues in a purely functional way. On Tue, May 9, 2023 at 3:55 AM Henning Thielemann wrote: > > > On Tue, 9 May 2023, David Feuer wrote: > > > I'm currently putting the finishing touches on the first version of a new priority queue package. It > > implements amortized-optimal priority queues and is intended to compete with the heaps package with > > a simpler, more compact, and hopefully faster implementation†. The main types are key-only and > > key-value priority queues, which I'm naming based on the conventions of the pqueue package: > > data MinQueue k > > data MinPQueue k a > > data MaxQueue k > > data MaxPQueue k a > > These are priority queues, not priority search queues, right? From david.feuer at gmail.com Mon May 15 21:21:21 2023 From: david.feuer at gmail.com (David Feuer) Date: Mon, 15 May 2023 17:21:21 -0400 Subject: [Haskell-cafe] Help with package/module naming In-Reply-To: References: Message-ID: I take that second bit back. There do seem to be some interesting things people have tried. But what I'm talking about are plain priority queues. On Mon, May 15, 2023 at 5:15 PM David Feuer wrote: > > Sorry I missed your message. Yes, these are priority queues. I don't > know of any particularly interesting ways to implement priority search > queues in a purely functional way. > > On Tue, May 9, 2023 at 3:55 AM Henning Thielemann > wrote: > > > > > > On Tue, 9 May 2023, David Feuer wrote: > > > > > I'm currently putting the finishing touches on the first version of a new priority queue package. It > > > implements amortized-optimal priority queues and is intended to compete with the heaps package with > > > a simpler, more compact, and hopefully faster implementation†. The main types are key-only and > > > key-value priority queues, which I'm naming based on the conventions of the pqueue package: > > > data MinQueue k > > > data MinPQueue k a > > > data MaxQueue k > > > data MaxPQueue k a > > > > These are priority queues, not priority search queues, right? From zubin at well-typed.com Fri May 19 08:26:56 2023 From: zubin at well-typed.com (Zubin Duggal) Date: Fri, 19 May 2023 13:56:56 +0530 Subject: [Haskell-cafe] [Haskell] [ANNOUNCE] Haskell Language Server 2.0.0.0 released Message-ID: Binaries for this release are available at https://downloads.haskell.org/~hls/haskell-language-server-2.0.0.0/. These binaries can be installed using [GHCup](https://www.haskell.org/ghcup/) or the Haskell VSCode extension. This is a fairly small release, marking the start of a new versioning where HLS and all the included packages in the distribution (plugins, ghcide etc.) will be versioned in lockstep. # Changelog - New versioning scheme for all packages distributed as part of HLS, versioning them in lockstep for each release. - Binaries for GHC 9.4.5 - Keep instance lenses stable even if parsed results are unavailable (#3545) - Keep stale lenses for module name (#3570) - Keep type lenses stable (#3558) 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 hecate at glitchbra.in Fri May 19 09:27:03 2023 From: hecate at glitchbra.in (=?UTF-8?Q?H=c3=a9cate?=) Date: Fri, 19 May 2023 11:27:03 +0200 Subject: [Haskell-cafe] [Haskell] [ANNOUNCE] Haskell Language Server 2.0.0.0 released In-Reply-To: References: Message-ID: <59536f47-24b4-5173-f1af-51205c34f000@glitchbra.in> Fantastic news! I really appreciate the fact that I could just rush to open ghcup and see that it's already available! This is prime user experience and I'm really grateful for all the coordination happening in this direction. Truly the ecosystem has made fantastic progress. Cheers, Hécate On 19/05/2023 10:26, Zubin Duggal wrote: > Binaries for this release are available at > https://downloads.haskell.org/~hls/haskell-language-server-2.0.0.0/. > > These binaries can be installed using > [GHCup](https://www.haskell.org/ghcup/) or the Haskell VSCode extension. > > This is a fairly small release, marking the start of a new versioning > where HLS and all the included packages in the distribution (plugins, > ghcide etc.) will be versioned in lockstep. > > # Changelog > > - New versioning scheme for all packages distributed as part of HLS, >   versioning them in lockstep for each release. > - Binaries for GHC 9.4.5 > - Keep instance lenses stable even if parsed results are unavailable > (#3545) > - Keep stale lenses for module name (#3570) > - Keep type lenses stable (#3558) > > Happy editing! > - Zubin > > _______________________________________________ > 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 From djsamperi at gmail.com Fri May 19 14:41:08 2023 From: djsamperi at gmail.com (Dominick Samperi) Date: Fri, 19 May 2023 10:41:08 -0400 Subject: [Haskell-cafe] Stackage question Message-ID: Hello, Can somebody explain how to resolve a problem with the resolver, specifically, my package (mathlist) appears on the Stackage page, but with the message "This package is not in any snapshots." I tried resolver: lts-20.21 (in stack.yaml), then changed this to resolver: ghc-9.4.5, but this doesn't make any difference. The page recommends adding the package to Stackage Nightly, and I guess I could try the third option, resolver: nightly-2023-05-19, but this seems odd. Why would I release a package with a particular hard-coded date for nightly? Shouldn't it just be "nightly" or something like this? Thanks, Dominick -------------- next part -------------- An HTML attachment was scrubbed... URL: From lemming at henning-thielemann.de Fri May 19 14:47:48 2023 From: lemming at henning-thielemann.de (Henning Thielemann) Date: Fri, 19 May 2023 16:47:48 +0200 (CEST) Subject: [Haskell-cafe] Stackage question In-Reply-To: References: Message-ID: <1a1f18cd-1d2d-62b-a158-f78bcd2d9d4@henning-thielemann.de> On Fri, 19 May 2023, Henning Thielemann wrote: > On Fri, 19 May 2023, Dominick Samperi wrote: > >> The page recommends adding the package to Stackage Nightly, and I guess I >> could try the third option, resolver: nightly-2023-05-19, but this seems >> odd. Why would I release a package with a particular hard-coded date for >> nightly? Shouldn't it just be "nightly" or something like this? > > You must add your package to the build-constraints.yaml file in the > repository at: > https://github.com/fpco/stackage/ I see, you have done this. Then I think you must wait a little bit until your package is built. From aaronallen8455 at gmail.com Sun May 21 20:38:41 2023 From: aaronallen8455 at gmail.com (Aaron Allen) Date: Sun, 21 May 2023 15:38:41 -0500 Subject: [Haskell-cafe] Summer of Haskell 2023 Project Selections Message-ID: This year, Google did not select Haskell as an open-source project for the Google Summer of Code program. In line with tradition, the Haskell community stepped up, with multiple individuals, companies, and non-profit organizations funding nine significant open-source contributions to the Haskell ecosystem: - Cabal file support for HLS - Implement Resolution Methods in HLS - Goto Definition for Third-Party Libraries in HLS - Teaching Weeder About Type Class Instances - Standardize GHC’s Error Dump in JSON Format - Maximally Decoupling Haddock and GHC - Representing Pattern - Improving Calligraphy - Structured Errors and Error Codes for cabal-install For more details about the accepted projects, the participants, and the mentors, see this announcement: https://summer.haskell.org/news/2023-05-14-summer-of-haskell-2023-project-selections.html We would like to thank the sponsors who made this possible: - The Haskell Foundation - Kadena - Jane Street - Holmusk - Gershom Bazerman - Edward Kmett - MLabs - Flipstone -------------- next part -------------- An HTML attachment was scrubbed... URL: From ivanperezdominguez at gmail.com Sun May 21 22:13:36 2023 From: ivanperezdominguez at gmail.com (Ivan Perez) Date: Sun, 21 May 2023 15:13:36 -0700 Subject: [Haskell-cafe] [ANN] NASA's Ogma 1.0.9 Message-ID: Hi everyone! I'm thrilled to announce the release of Ogma 1.0.9! Ogma is a NASA tool that facilitates integrating runtime monitors or runtime verification applications into other systems. Use cases supported by Ogma include producing Robot Operating System (ROS 2) packages [3], NASA Core Flight System (cFS) applications [4], and components for FPrime [1] (the software framework used for the Mars Helicopter), as well as generating monitors from requirements specified in natural language [5]. Ogma is also one of the solutions recommended for monitoring in Space ROS applications [2]. Ogma leverages existing Haskell work, like the Copilot language [6] (also funded by NASA) and BNFC [7]. For more details, including videos of monitors being generated and flown in simulators, see: https://github.com/nasa/ogma * What's changed This release improves the user experience and fixes a number of bugs in the code and documentation. A new flag `--target-file-name` allows users to specify the root for C monitoring files generated by some of the backends, which makes for a simpler process. For details about the release, see: https://github.com/nasa/ogma/releases/tag/v1.0.9 * Releases Ogma is released as a collection of packages in Hackage. The entry point is https://hackage.haskell.org/package/ogma-cli. * Code The github repo is located at: https://github.com/nasa/ogma. * What's coming The next release is planned for Jul 21st, 2023. Ogma is currently undergoing the qualification process necessary for NASA Class D Software. Apart from the changes required by that process, we also have the following in our roadmap: - Extend ROS 2 monitors with further information about sources of violations. - Add tests to generated code. - Simplify NASA cFS monitor generation process. - Simplify the architecture. More specifically, we now have improved the compilation process by using a higher-kinded data structure, allowing us to incorporate different kinds of information to syntax trees used during both parsing and code generation. This feature has been prototyped, and is currently undergoing testing. We hope that you are as excited as we are and that our work demonstrates that, with the right support, Haskell can reach farther than we ever thought possible. Happy Haskelling! Ivan [1] https://github.com/nasa/fprime [2] https://space.ros.org/ [3] https://www.ros.org/ [4] https://github.com/nasa/cFS [5] https://github.com/NASA-SW-VnV/fret [6] https://github.com/Copilot-Language/copilot [7] https://github.com/BNFC/bnfc -------------- next part -------------- An HTML attachment was scrubbed... URL: From ben at well-typed.com Tue May 23 21:31:19 2023 From: ben at well-typed.com (Ben Gamari) Date: Tue, 23 May 2023 17:31:19 -0400 Subject: [Haskell-cafe] [ANNOUNCE] GHC 9.6.2 is now available Message-ID: <87a5xuohv2.fsf@smart-cactus.org> The GHC developers are happy to announce the availability of GHC 9.6.2. Binary distributions, source distributions, and documentation are available at https://downloads.haskell.org/ghc/9.6.2 This release is primarily a bug-fix release addressing a few issues found in 9.6.2. These include: * a number of simplifier and specialisation issues (#22761, #22549) * A bug resulting in crashes of programs using the new ``listThreads#`` primop (#23071). * A compiler crash triggered by certain uses of quantified constraints (#23171) * Various bugs in the Javascript backend have been fixed (#23399, #23360, #23346) * A missing write barrier in the non-moving collector's handling of selector thunks, resulting in undefined behavior (#22930). * The non-moving garbage collector's treatment of weak pointers has been revamped which should allow more reliable finalization of ``Weak#`` closures (#22327) * The non-moving garbage collector now bounds the amount of marking it will do during the post-marking stop-the-world phase, greatly reducing tail latencies in some programs (#22929) A full accounting of changes can be found in the [release notes]. As some of the fixed issues do affect correctness users are encouraged to upgrade promptly. We would like to thank Microsoft Azure, GitHub, IOG, the Zw3rk stake pool, Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, 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. Happy compiling, ~ Ben [ticket]: https://gitlab.haskell.org/ghc/ghc/-/issues/new [release notes]: https://downloads.haskell.org/~ghc/9.6.2/docs/users_guide/9.6.2-notes.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 487 bytes Desc: not available URL: From profited at tutanota.com Wed May 24 12:52:57 2023 From: profited at tutanota.com (profited at tutanota.com) Date: Wed, 24 May 2023 14:52:57 +0200 (CEST) Subject: [Haskell-cafe] what are correct ways to translate haskell code ? Message-ID: let's consider this example         Alice has 1.hs like this                 v :: (,) Int Bool                 v = (,) 0 False                 main :: IO ()                 main = putStrLn "print some magic number" >> print ( fst v )         Bob download 1.hs from Alice         Bob would like to change 1.hs to 2.hs         Bob want the programs [ 1.hs 2.hs ] to behave the same         the reason that Bob want to modify 1.hs may be                 Bob does not like the type (,) in 1.hs         Bob has Vector_2.hs                 module Vector_2 where                 data Vector_2 a b = C a b                 x1_of :: Vector_2 a b -> a                 x1_of ( C x1 _ ) = x1                 x2_of :: Vector_2 a b -> b                 x2_of ( C _ x2 ) = x2         Bob like his Vector_2.hs         Bob thinks the Vector_2 shall be good enough to replace (,) in 1.hs i want to create a translator.hs for Bob         Bob tell the translator.hs that Bob want to replace (,) with Vector_2 in 1.hs         translator.hs automatically translate 1.hs to 2.hs         2.hs shall look like this                 import Vector_2                         ( Vector_2 )                 import qualified Vector_2                 v :: Vector_2 Int Bool                 v = Vector_2.C 0 False                 main :: IO ()                 main = putStrLn "print some magic number" >> print ( Vector_2.x1_of v ) what shall i do ? From jeffbrown.the at gmail.com Wed May 24 12:57:34 2023 From: jeffbrown.the at gmail.com (Jeffrey Brown) Date: Wed, 24 May 2023 07:57:34 -0500 Subject: [Haskell-cafe] what are correct ways to translate haskell code ? In-Reply-To: References: Message-ID: The term for this is "automatic refactoring". It's a deep problem, but it's been written about a lot. On Wed, May 24, 2023 at 7:53 AM profited--- via Haskell-Cafe < haskell-cafe at haskell.org> wrote: > let's consider this example > Alice has 1.hs like this > v :: (,) Int Bool > v = (,) 0 False > > main :: IO () > main = putStrLn "print some magic number" >> print ( fst v > ) > > Bob download 1.hs from Alice > > Bob would like to change 1.hs to 2.hs > Bob want the programs [ 1.hs 2.hs ] to behave the same > > the reason that Bob want to modify 1.hs may be > Bob does not like the type (,) in 1.hs > > Bob has Vector_2.hs > module Vector_2 where > > data Vector_2 a b = C a b > > x1_of :: Vector_2 a b -> a > x1_of ( C x1 _ ) = x1 > > x2_of :: Vector_2 a b -> b > x2_of ( C _ x2 ) = x2 > > Bob like his Vector_2.hs > Bob thinks the Vector_2 shall be good enough to replace (,) in 1.hs > > i want to create a translator.hs for Bob > Bob tell the translator.hs that Bob want to replace (,) with > Vector_2 in 1.hs > translator.hs automatically translate 1.hs to 2.hs > 2.hs shall look like this > import Vector_2 > ( Vector_2 ) > import qualified Vector_2 > > v :: Vector_2 Int Bool > v = Vector_2.C 0 False > > main :: IO () > main = putStrLn "print some magic number" >> print ( > Vector_2.x1_of v ) > > what shall i do ? > _______________________________________________ > 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. -- Jeff Brown | Jeffrey Benjamin Brown LinkedIn | Github | Twitter | Facebook -------------- next part -------------- An HTML attachment was scrubbed... URL: From migmit at gmail.com Wed May 24 13:01:49 2023 From: migmit at gmail.com (MigMit) Date: Wed, 24 May 2023 15:01:49 +0200 Subject: [Haskell-cafe] what are correct ways to translate haskell code ? In-Reply-To: References: Message-ID: I don't think that's possible. Assume that there is a library that contains a module Stupid with a function osiudfhg, which is actually the same as fst: module Stupid where osiudfhg :: (a, b) -> a osiudfhg (a, _) = a If Alice uses that library, then her code could look like main = putStrLn "print some magic number" >> print ( osiudfhg v ) How is Bob's code supposed to look? Maybe it should somehow replace "osiudfhg" with "x1_of", but how is it supposed to know that? It is a library function, after all. Yes, it might analyze source code of the Stupid module, but this is a daunting task. > On 24 May 2023, at 14:52, profited--- via Haskell-Cafe wrote: > > let's consider this example > Alice has 1.hs like this > v :: (,) Int Bool > v = (,) 0 False > > main :: IO () > main = putStrLn "print some magic number" >> print ( fst v ) > > Bob download 1.hs from Alice > > Bob would like to change 1.hs to 2.hs > Bob want the programs [ 1.hs 2.hs ] to behave the same > > the reason that Bob want to modify 1.hs may be > Bob does not like the type (,) in 1.hs > > Bob has Vector_2.hs > module Vector_2 where > > data Vector_2 a b = C a b > > x1_of :: Vector_2 a b -> a > x1_of ( C x1 _ ) = x1 > > x2_of :: Vector_2 a b -> b > x2_of ( C _ x2 ) = x2 > > Bob like his Vector_2.hs > Bob thinks the Vector_2 shall be good enough to replace (,) in 1.hs > > i want to create a translator.hs for Bob > Bob tell the translator.hs that Bob want to replace (,) with Vector_2 in 1.hs > translator.hs automatically translate 1.hs to 2.hs > 2.hs shall look like this > import Vector_2 > ( Vector_2 ) > import qualified Vector_2 > > v :: Vector_2 Int Bool > v = Vector_2.C 0 False > > main :: IO () > main = putStrLn "print some magic number" >> print ( Vector_2.x1_of v ) > > what shall i do ? > _______________________________________________ > 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 jeffbrown.the at gmail.com Wed May 24 13:40:30 2023 From: jeffbrown.the at gmail.com (Jeffrey Brown) Date: Wed, 24 May 2023 08:40:30 -0500 Subject: [Haskell-cafe] what are correct ways to translate haskell code ? In-Reply-To: References: Message-ID: > Maybe it should somehow replace "osiudfhg" with "x1_of", but how is it supposed to know that? It is a library function, after all. My understanding was that the user would ask for a refactoring by explaining the isomorphism between two data types. I just remembered that Facebook open-sourced something called Retrie that they use to refactor their own Haskell code. That should give a solid lower bound on what is possible. On Wed, May 24, 2023 at 8:02 AM MigMit wrote: > I don't think that's possible. Assume that there is a library that > contains a module Stupid with a function osiudfhg, which is actually the > same as fst: > > module Stupid where > osiudfhg :: (a, b) -> a > osiudfhg (a, _) = a > > If Alice uses that library, then her code could look like > > main = putStrLn "print some magic number" >> print ( osiudfhg v ) > > How is Bob's code supposed to look? Maybe it should somehow replace > "osiudfhg" with "x1_of", but how is it supposed to know that? It is a > library function, after all. > > Yes, it might analyze source code of the Stupid module, but this is a > daunting task. > > > On 24 May 2023, at 14:52, profited--- via Haskell-Cafe < > haskell-cafe at haskell.org> wrote: > > > > let's consider this example > > Alice has 1.hs like this > > v :: (,) Int Bool > > v = (,) 0 False > > > > main :: IO () > > main = putStrLn "print some magic number" >> print ( fst > v ) > > > > Bob download 1.hs from Alice > > > > Bob would like to change 1.hs to 2.hs > > Bob want the programs [ 1.hs 2.hs ] to behave the same > > > > the reason that Bob want to modify 1.hs may be > > Bob does not like the type (,) in 1.hs > > > > Bob has Vector_2.hs > > module Vector_2 where > > > > data Vector_2 a b = C a b > > > > x1_of :: Vector_2 a b -> a > > x1_of ( C x1 _ ) = x1 > > > > x2_of :: Vector_2 a b -> b > > x2_of ( C _ x2 ) = x2 > > > > Bob like his Vector_2.hs > > Bob thinks the Vector_2 shall be good enough to replace (,) in > 1.hs > > > > i want to create a translator.hs for Bob > > Bob tell the translator.hs that Bob want to replace (,) with > Vector_2 in 1.hs > > translator.hs automatically translate 1.hs to 2.hs > > 2.hs shall look like this > > import Vector_2 > > ( Vector_2 ) > > import qualified Vector_2 > > > > v :: Vector_2 Int Bool > > v = Vector_2.C 0 False > > > > main :: IO () > > main = putStrLn "print some magic number" >> print ( > Vector_2.x1_of v ) > > > > what shall i do ? > > _______________________________________________ > > 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. -- Jeff Brown | Jeffrey Benjamin Brown LinkedIn | Github | Twitter | Facebook -------------- next part -------------- An HTML attachment was scrubbed... URL: From haskellcafe at dandart.co.uk Wed May 24 15:32:27 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Wed, 24 May 2023 16:32:27 +0100 Subject: [Haskell-cafe] what are correct ways to translate haskell code ? In-Reply-To: References: Message-ID: It seems to me that when you have an isomorphism between two types, a natural transformation from one to the other would usually be included in whichever of the two types are the newer (or maybe both). For example, Vector_2 would have e.g. fromTuple :: (a, b) -> Vector_2 a b fromTuple (a, b) = C a b toTuple :: Vactor_2 a b -> (a, b) toTuple (C a b) = (a, b) then in the interim, one could use these to interface between them. When types and natural transformation functions like these exist in scope, text editor plugins should be able to take advantage of these using parsers such as happy/alex/ghc's/hlint. I've used specifically hlint rules to rewrite, maybe that will help for now? Cheers From harendra.kumar at gmail.com Thu May 25 13:56:55 2023 From: harendra.kumar at gmail.com (Harendra Kumar) Date: Thu, 25 May 2023 19:26:55 +0530 Subject: [Haskell-cafe] [ANN] Haskell Streamly 0.9.0 Release Message-ID: We are glad to announce streamly 0.9.0 release. streamly-0.9.0 and streamly-core-0.1.0 have been available on Hackage for some time now. You can find the source at https://github.com/composewell/streamly and reference documentation and some guides are also available on https://streamly.composewell.com . The website also has functionality to search across multiple streamly packages. This release did a major revamp of the API to make it easier to comprehend and less error prone to use. Now there is a single "Stream" type instead of the polymorphic "IsStream" type class. There are explicit concurrency combinators to enable concurrent behavior on the same type instead of using different types for that purpose. Dependency on GHC rewrite rules has been removed for more robust behavior and better programmer control, though it required splitting the stream type into the default direct-style type "Stream" and the CPS type "StreamK". The package has been split into two, "streamly-core" intends to depend only on boot libraries (currently has some more deps due to backward compatibility), "streamly" provides higher level functionality like concurrency. Parser functionality has been released. Parsers fuse with streams and are compatible with folds i.e. parsers are folds with more power. Please see the following docs for more details: * Changelog: https://streamly.composewell.com/streamly-0.9.0/User/ProjectRelated/Changelog.html * Upgrade guide: https://streamly.composewell.com/streamly-0.9.0/User/ProjectRelated/Upgrading.html Your feedback is important to us. We did the API revamp based on feedback from users. -harendra From nikivazou at gmail.com Fri May 26 08:40:43 2023 From: nikivazou at gmail.com (Niki Vazou) Date: Fri, 26 May 2023 10:40:43 +0200 Subject: [Haskell-cafe] Haskell Symposium'23 Calls For Papers Message-ID: Dear all, Reminder that the Haskell Symposium’23 Submission Deadline is one week away. We are looking forward for your papers. Best, Niki =============================================================================== ACM SIGPLAN CALL FOR SUBMISSIONS Haskell Symposium 2023 Seattle, WA, USA Fri 8 -- Sat 9 September, 2023 http://www.haskell.org/haskell-symposium/2023/ ================================================================================ The ACM SIGPLAN Haskell Symposium 2023 will be co-located with the 2023 International Conference on Functional Programming (ICFP). As with last year, Haskell'23 will use a single-track submission process. That is, we will only have the regular track and no early track. 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. 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 (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. Functional pearls, experience reports, tutorials and demo proposals should be labelled clearly as such. Lightweight Double-blind Reviewing ---------------------------------- Haskell Symposium 2023 will use a lightweight double-blind reviewing process. To facilitate this, submitted papers must adhere to two rules: 1. Author names and institutions must be omitted, and 2. 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 judgement 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 anonymised). 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 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 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: 1 June 2023 (Thu) Notification: 4 July 2023 (Tue) Camera ready: 18 July 2023 (Tue) Deadlines are anywhere on Earth. Submission ---------- Submissions must adhere to SIGPLAN's republication policy (http://sigplan.org/Resources/Policies/Republication/), and authors should be aware of ACM's policies on plagiarism (https://www.acm.org/publications/policies/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://haskell23.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 anonymised and non-anonymised supplementary material. Anonymised supplementary material will be visible to reviewers immediately; non-anonymised 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 (http://www.acm.org/publications/policies/copyright-policy) and ACM Author Rights (http://authors.acm.org/main.html). 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. Artefacts ========= Authors are encouraged to make auxiliary material (artefacts like source code, test data, etc.) available with their paper. Authors can opt to have these artefacts published alongside their paper in the ACM Digital Library (copyright of artefacts remains with the authors). Artefacts must be included as part of their submission to HotCRP and should consist of a .zip file containing the artefact materials, a README explaining the contents of the artefact and how it should be used, and a LICENSE file. If an accepted paper's artefacts are made permanently available for retrieval in a publicly accessible archival repository like the ACM Digital Library, that paper qualifies for an Artefact badge (https://www.acm.org/publications/policies/artifact-review-badging). Program Committee ================= Alexander Green Standard Chartered, UK David Thrane Christiansen The Haskell Foundation, Denmark Edsko de Vries Well-Typed LLP, Netherlands Exequiel Rivas Tallinn University of Technology Facundo Domínguez Tweag Florian Zuleger TU Vienna, Austria Graham Hutton University of Nottingham, UK Jasper Van der Jeugt Snyk, Switzerland Jennifer Paykin Intel, USA Jesper Cockx Delft University of Technology, Netherlands Jose Nuno Oliveira University of Minho & INESC TEC, Portugal Michael Sperber Active Group GmbH, Germany Michel Steuwer University of Edinburgh, UK Niki Vazou (chair) IMDEA Software Institute, Spain Rumyana Neykova Brunel University London, UK Trevor L. McDonell (co-chair) Utrecht University, Netherlands Ugo Dal Lago University of Bologna, Italy & INRIA, France Wen Kokke University of Edinburgh, UK Leonidas Lampropoulos University of Maryland, College Park, USA If you have questions, please contact the chairs at niki.vazou at imdea.org and t.l.mcdonell at uu.nl. ================================================================================ -------------- next part -------------- An HTML attachment was scrubbed... URL: From jamesbtobin at gmail.com Fri May 26 10:05:35 2023 From: jamesbtobin at gmail.com (James Tobin) Date: Fri, 26 May 2023 11:05:35 +0100 Subject: [Haskell-cafe] JOB | Platform Lead (Singapore/London) Message-ID: Hello I'm working with an employer that is looking to hire someone in London or Singapore to take lead on the modernisation of their on-premises environment. Consequently, I had hoped that some members of this group may like to discuss. I can be reached using "JamesBTobin (at) Gmail (dot) Com". Kind regards, James From tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk Fri May 26 10:10:37 2023 From: tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk (Tom Ellis) Date: Fri, 26 May 2023 11:10:37 +0100 Subject: [Haskell-cafe] JOB | Platform Lead (Singapore/London) In-Reply-To: References: Message-ID: Could the mods please consider banning this poster? The only messages he ever posts are non-Haskell job ads. Tom On Fri, May 26, 2023 at 11:05:35AM +0100, James Tobin wrote: > Hello I'm working with an employer that is looking to hire someone in > London or Singapore to take lead on the modernisation of their > on-premises environment. Consequently, I had hoped that some members > of this group may like to discuss. I can be reached using > "JamesBTobin (at) Gmail (dot) Com". Kind regards, James > _______________________________________________ > 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 leah at vuxu.org Fri May 26 12:27:46 2023 From: leah at vuxu.org (Leah Neukirchen) Date: Fri, 26 May 2023 14:27:46 +0200 Subject: [Haskell-cafe] Munich Haskell Meeting, 2023-05-29 @ 19:30 Message-ID: <874jnzffb1.fsf@vuxu.org> Dear all, Next week, our monthly Munich Haskell Meeting will take place again on Monday, May 29 at 19h30. The weather should be good, so we'll meet at **Hirschgarten Biergarten**. For details see here: http://muenchen.haskell.bayern/dates.html If you plan to join, please add yourself to this nuudel so we can look out for you. It is OK to add yourself to the nuudel anonymously or pseudonymously. https://nuudel.digitalcourage.de/xduCn5pUNTlcl7dT Everybody is welcome! cu, -- Leah Neukirchen https://leahneukirchen.org/ From devsurveys at yahoo.com Fri May 26 12:59:37 2023 From: devsurveys at yahoo.com (Dev Survey) Date: Fri, 26 May 2023 12:59:37 +0000 (UTC) Subject: [Haskell-cafe] Developer Surveys References: <403601866.1586984.1685105977857.ref@mail.yahoo.com> Message-ID: <403601866.1586984.1685105977857@mail.yahoo.com> Hello Developers,  No login required, anonymous survey, and takes no more than 5-10 minutes. Developer Tools Survey Shortened URL : Developer Tools Survey (Anonymous) Thanks, have a great day -------------- next part -------------- An HTML attachment was scrubbed... URL: From migmit at gmail.com Fri May 26 13:06:41 2023 From: migmit at gmail.com (MigMit) Date: Fri, 26 May 2023 15:06:41 +0200 Subject: [Haskell-cafe] Developer Surveys In-Reply-To: <403601866.1586984.1685105977857@mail.yahoo.com> References: <403601866.1586984.1685105977857.ref@mail.yahoo.com> <403601866.1586984.1685105977857@mail.yahoo.com> Message-ID: <8C91B7EC-F6B2-4E52-8B83-DF503A5EA335@gmail.com> "Would you like to know where your "functions" are in your code ?" What? > On 26 May 2023, at 14:59, Dev Survey via Haskell-Cafe wrote: > > Hello Developers, > > > No login required, anonymous survey, and takes no more than 5-10 minutes. > > > Developer Tools Survey > > Shortened URL : Developer Tools Survey (Anonymous) > > > > Thanks, have a great day > > > _______________________________________________ > 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 zubin at well-typed.com Fri May 26 14:06:00 2023 From: zubin at well-typed.com (Zubin Duggal) Date: Fri, 26 May 2023 19:36:00 +0530 Subject: [Haskell-cafe] [Haskell] [ANNOUNCE] GHC 9.2.8 released Message-ID: <7g2acy7hyoxggm6qqx6br4bmfwnw6cc3s3yv7f24eebgxzanes@r57zpmb7f3lp> The GHC developers are happy to announce the availability of GHC 9.2.8. Binary distributions, source distributions, and documentation are available at [downloads.haskell.org](https://downloads.haskell.org/ghc/9.2.8). This release is primarily a bugfix release addressing one issue found in 9.2.7: - Fix a bug with RTS linker failing with 'internal error: m32_allocator_init: Failed to map' on newer Linux kernels (#19421). We would like to thank Microsoft Azure, GitHub, IOG, the Zw3rk stake pool, Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, 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. Happy compiling, - Zubin [ticket]: https://gitlab.haskell.org/ghc/ghc/-/issues/new [release notes]: https://downloads.haskell.org/~ghc/9.2.8/docs/html/users_guide/9.2.8-notes.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: From heraldhoi at gmail.com Fri May 26 14:15:34 2023 From: heraldhoi at gmail.com (Geraldus) Date: Fri, 26 May 2023 17:15:34 +0300 Subject: [Haskell-cafe] Searching for dependent code Message-ID: Hello, dear Cafe! I have a mono repository and would like to do the following for CI: - take the files from the commit - Find all the code that depends on them explicitly or implicitly - make a list of executable files that need to be rebuilt This happens in CI and there is no cache of previous builds. Note that dependencies may not be direct, e.g: - there are packages A, B, C. - C depends only on B - B depends on A - C should be rebuilt if there were changes in A Can you please tell me if there is any ready-made solution for this? -------------- next part -------------- An HTML attachment was scrubbed... URL: From jeffbrown.the at gmail.com Fri May 26 14:45:51 2023 From: jeffbrown.the at gmail.com (Jeffrey Brown) Date: Fri, 26 May 2023 09:45:51 -0500 Subject: [Haskell-cafe] Searching for dependent code In-Reply-To: References: Message-ID: I don't know what the state of the art is, but for chasing down a tree of dependencies to determine what needs to be rebuilt, there's always make. Usually a human hand-codes the dependencies of each file in the Makefile -- but if you could automate that, make could do the rest. Note also that shake is a make alternative written in Haskell, with (gross understatement here) better syntax. On Fri, May 26, 2023 at 9:16 AM Geraldus wrote: > Hello, dear Cafe! > > I have a mono repository and would like to do the following for CI: > - take the files from the commit > - Find all the code that depends on them explicitly or implicitly > - make a list of executable files that need to be rebuilt > > This happens in CI and there is no cache of previous builds. Note that > dependencies may not be direct, e.g: > - there are packages A, B, C. > - C depends only on B > - B depends on A > - C should be rebuilt if there were changes in A > > Can you please tell me if there is any ready-made solution for this? > _______________________________________________ > 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. -- Jeff Brown | Jeffrey Benjamin Brown LinkedIn | Github | Twitter | Facebook -------------- next part -------------- An HTML attachment was scrubbed... URL: From devsurveys at yahoo.com Fri May 26 14:58:47 2023 From: devsurveys at yahoo.com (Dev Survey) Date: Fri, 26 May 2023 14:58:47 +0000 (UTC) Subject: [Haskell-cafe] Developer Surveys In-Reply-To: <8C91B7EC-F6B2-4E52-8B83-DF503A5EA335@gmail.com> References: <403601866.1586984.1685105977857.ref@mail.yahoo.com> <403601866.1586984.1685105977857@mail.yahoo.com> <8C91B7EC-F6B2-4E52-8B83-DF503A5EA335@gmail.com> Message-ID: <405502668.1639128.1685113127461@mail.yahoo.com> It probably has to be phrased differently. When you have too much code, and you write a function containing multiple packages, it's good to have a report of which function is exporting what so that you can fix functions when packages are updated.  On Friday, May 26, 2023 at 06:36:54 PM GMT+5:30, MigMit wrote: "Would you like to know where your "functions" are in your code ?" What? > On 26 May 2023, at 14:59, Dev Survey via Haskell-Cafe wrote: > > Hello Developers, > > > No login required, anonymous survey, and takes no more than 5-10 minutes. > > > Developer Tools Survey > > Shortened URL : Developer Tools Survey (Anonymous) > > > > Thanks, have a great day > > > _______________________________________________ > 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 sergueyz at gmail.com Fri May 26 19:20:46 2023 From: sergueyz at gmail.com (Serguey Zefirov) Date: Fri, 26 May 2023 22:20:46 +0300 Subject: [Haskell-cafe] Developer Surveys In-Reply-To: <405502668.1639128.1685113127461@mail.yahoo.com> References: <403601866.1586984.1685105977857.ref@mail.yahoo.com> <403601866.1586984.1685105977857@mail.yahoo.com> <8C91B7EC-F6B2-4E52-8B83-DF503A5EA335@gmail.com> <405502668.1639128.1685113127461@mail.yahoo.com> Message-ID: In case of Haskell, there are multiple tools for that, one especially valuable is the type system. 2023-05-26 17:58 GMT+03:00, Dev Survey via Haskell-Cafe : > It probably has to be phrased differently. When you have too much code, and > you write a function containing multiple packages, it's good to have a > report of which function is exporting what so that you can fix functions > when packages are updated. > On Friday, May 26, 2023 at 06:36:54 PM GMT+5:30, MigMit > wrote: > > "Would you like to know where your "functions" are in your code ?" > > What? > >> On 26 May 2023, at 14:59, Dev Survey via Haskell-Cafe >> wrote: >> >> Hello Developers, >> >> >> No login required, anonymous survey, and takes no more than 5-10 minutes. >> >> >> Developer Tools Survey >> >> Shortened URL : Developer Tools Survey (Anonymous) >> >> >> >> Thanks, have a great day >> >> >> _______________________________________________ >> 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 f.occhipinti at gmail.com Sat May 27 09:09:39 2023 From: f.occhipinti at gmail.com (francesco occhipinti) Date: Sat, 27 May 2023 11:09:39 +0200 Subject: [Haskell-cafe] Munich Haskell Meeting, 2023-05-29 @ 19:30 In-Reply-To: <874jnzffb1.fsf@vuxu.org> References: <874jnzffb1.fsf@vuxu.org> Message-ID: Hi, considering the reach of this list i would be more interested in remote meetups, we hardly ever hear about those --francesco On 26/05/23 14:27, Leah Neukirchen wrote: > Dear all, > > Next week, our monthly Munich Haskell Meeting will take place again on > Monday, May 29 at 19h30. > The weather should be good, so we'll meet at **Hirschgarten Biergarten**. > For details see here: > > http://muenchen.haskell.bayern/dates.html > > If you plan to join, please add yourself to this nuudel so we can look > out for you. It is OK to add yourself to the nuudel anonymously or > pseudonymously. > > https://nuudel.digitalcourage.de/xduCn5pUNTlcl7dT > > Everybody is welcome! > > cu, From ben.franksen at online.de Sat May 27 13:53:55 2023 From: ben.franksen at online.de (Ben Franksen) Date: Sat, 27 May 2023 15:53:55 +0200 Subject: [Haskell-cafe] GHC handling of signals Message-ID: Consider the following program: import System.IO import System.IO.Error import System.Posix.Signals main = do installHandler sigPIPE Default Nothing c <- readFile "/usr/share/dict/words" putStrLn c `catchIOError` \e -> hPutStrLn stderr (show e) hPutStrLn stderr "I survived" Compile with ghc and run as ./test | true As expected, you see nothing further displayed, since according to `man 7 signal` the default for SIGPIPE is to terminate the program, which happens before the exception handler has a chance to run. Without the line where the signal handler gets installed the behavior is different: You'll see: : commitBuffer: resource vanished (Broken pipe) I survived Apparently the GHC runtime does something like installHandler sigPIPE Ignore Nothing This is not a complaint, I find the behavior quite reasonable and much more predictable than the default (why should I not be able to catch EPIPE and continue?). The question is whether it is documented how the GHC runtime treats signals and if yes where? Cheers Ben -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From donn at avvanta.com Sat May 27 14:46:44 2023 From: donn at avvanta.com (Donn Cave) Date: Sat, 27 May 2023 15:46:44 +0100 Subject: [Haskell-cafe] GHC handling of signals In-Reply-To: References: Message-ID: <1685198841895.51fbb34032328df9@avvanta.com> quoth Ben Franksen > Consider the following program: > > import System.IO > import System.IO.Error > import System.Posix.Signals > > main = do > installHandler sigPIPE Default Nothing > c <- readFile "/usr/share/dict/words" > putStrLn c `catchIOError` \e -> hPutStrLn stderr (show e) > hPutStrLn stderr "I survived" > > Compile with ghc and run as > > ./test | true > > As expected, you see nothing further displayed, since according to `man > 7 signal` the default for SIGPIPE is to terminate the program, which > happens before the exception handler has a chance to run. > > Without the line where the signal handler gets installed the behavior is > different: You'll see: > > : commitBuffer: resource vanished (Broken pipe) > I survived > > Apparently the GHC runtime does something like > > installHandler sigPIPE Ignore Nothing > > This is not a complaint, I find the behavior quite reasonable and much > more predictable than the default (why should I not be able to catch > EPIPE and continue?). > > The question is whether it is documented how the GHC runtime treats > signals and if yes where? For more on this, see https://mail.haskell.org/pipermail/glasgow-haskell-users/2010-August/019082.html That thread doesn't really go into why GHC interferes with SIGPIPE. I personally would lean towards letting the operating system defaults prevail, but whatever, I don't do Haskell anyway. The discussion there is more about why Ignore, rather than SIG_IGN. Donn From ietf-dane at dukhovni.org Sat May 27 14:52:28 2023 From: ietf-dane at dukhovni.org (Viktor Dukhovni) Date: Sat, 27 May 2023 10:52:28 -0400 Subject: [Haskell-cafe] GHC handling of signals In-Reply-To: References: Message-ID: On Sat, May 27, 2023 at 03:53:55PM +0200, Ben Franksen wrote: > Apparently the GHC runtime does something like > > installHandler sigPIPE Ignore Nothing > > This is not a complaint, I find the behavior quite reasonable and much > more predictable than the default (why should I not be able to catch > EPIPE and continue?). > > The question is whether it is documented how the GHC runtime treats > signals and if yes where? In the case of SIGPIPE, the relevant documentation can be found in: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/ffi.html?highlight=ffi#interruptible-foreign-calls -- Viktor. From haskellcafe at dandart.co.uk Sat May 27 23:15:20 2023 From: haskellcafe at dandart.co.uk (Dan Dart) Date: Sun, 28 May 2023 00:15:20 +0100 Subject: [Haskell-cafe] Munich Haskell Meeting, 2023-05-29 @ 19:30 In-Reply-To: References: <874jnzffb1.fsf@vuxu.org> Message-ID: I'm with Francesco there. Not being anywhere near Munich myself and being unable to get out much anyway, maybe some of these can be streamed. I once did a talk at the Birmingham LUG which got streamed so people outside could ask questions, maybe that could be done with the rest of these for those interested in remote talks. Toodloo From ben.franksen at online.de Sat May 27 23:47:55 2023 From: ben.franksen at online.de (Ben Franksen) Date: Sun, 28 May 2023 01:47:55 +0200 Subject: [Haskell-cafe] GHC handling of signals In-Reply-To: References: Message-ID: Am 27.05.23 um 16:46 schrieb Donn Cave: > For more on this, see > https://mail.haskell.org/pipermail/glasgow-haskell-users/2010-August/019082.html Am 27.05.23 um 16:52 schrieb Viktor Dukhovni: > On Sat, May 27, 2023 at 03:53:55PM +0200, Ben Franksen wrote: > >> Apparently the GHC runtime does something like >> >> installHandler sigPIPE Ignore Nothing >> >> This is not a complaint, I find the behavior quite reasonable and much >> more predictable than the default (why should I not be able to catch >> EPIPE and continue?). >> >> The question is whether it is documented how the GHC runtime treats >> signals and if yes where? > > In the case of SIGPIPE, the relevant documentation can be found in: > > https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/ffi.html?highlight=ffi#interruptible-foreign-calls Thanks for both of your answers. The location in the docs is a bit obscure, I wouldn't look for it there, but at least it is documented. For posterity, what GHC runtime does is to install a do-nothing handler, rather than set it to SIG_IGN. This is so that this setting won't be inherited by child processes (as it would be with SIG_IGN). Cheers Ben -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From ben.franksen at online.de Sun May 28 14:35:34 2023 From: ben.franksen at online.de (Ben Franksen) Date: Sun, 28 May 2023 16:35:34 +0200 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older Message-ID: Hi Everyone I was trying to fix a bug in a large program (darcs) and stumbled over a problem that I cooked down to the minimal test program below. The issue here is that with ghc-8.6 and earlier, properly handling an invalid regular expression (here: the empty string) does not work: somehow something calls "error". With ghc-8.8 and later it works as expected. In both cases the latest releases of the regex packages are used. {-# LANGUAGE GeneralizedNewtypeDeriving #-} import Prelude hiding (fail) import Control.Monad.Fail import Control.Exception import Text.Regex.Base import Text.Regex.TDFA newtype RegexFail a = RegexFail { runRegexFail :: Either String a } deriving (Functor, Applicative, Monad) instance MonadFail RegexFail where fail = RegexFail . Left test :: RegexFail Regex test = makeRegexM "" main = handle (\(ErrorCall _) -> putStrLn "error call") $ case runRegexFail test of Left _ -> putStrLn "clean error handling" Right x -> print (matchM x "" :: Maybe Bool) > runghc-8.6 test2.hs √ error call > runghc-8.8 test2.hs √ clean error handling (1) Is this a known problem with ghc < 8.8 / base < 4.13? (2) Is there a work-around for older ghc versions? Cheers Ben -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From allbery.b at gmail.com Sun May 28 14:42:12 2023 From: allbery.b at gmail.com (Brandon Allbery) Date: Sun, 28 May 2023 10:42:12 -0400 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older In-Reply-To: References: Message-ID: Isn't this just `MonadFail` not existing in older GHC versions? You need to override `fail` in the `Monad` instance instead of using GND. On Sun, May 28, 2023 at 10:36 AM Ben Franksen wrote: > > Hi Everyone > > I was trying to fix a bug in a large program (darcs) and stumbled over a > problem that I cooked down to the minimal test program below. The issue > here is that with ghc-8.6 and earlier, properly handling an invalid > regular expression (here: the empty string) does not work: somehow > something calls "error". With ghc-8.8 and later it works as expected. In > both cases the latest releases of the regex packages are used. > > {-# LANGUAGE GeneralizedNewtypeDeriving #-} > import Prelude hiding (fail) > import Control.Monad.Fail > import Control.Exception > import Text.Regex.Base > import Text.Regex.TDFA > > newtype RegexFail a = RegexFail { runRegexFail :: Either String a } > deriving (Functor, Applicative, Monad) > > instance MonadFail RegexFail where > fail = RegexFail . Left > > test :: RegexFail Regex > test = makeRegexM "" > > main = > handle (\(ErrorCall _) -> putStrLn "error call") $ > case runRegexFail test of > Left _ -> putStrLn "clean error handling" > Right x -> print (matchM x "" :: Maybe Bool) > > > runghc-8.6 test2.hs √ > error call > > runghc-8.8 test2.hs √ > clean error handling > > (1) Is this a known problem with ghc < 8.8 / base < 4.13? > (2) Is there a work-around for older ghc versions? > > Cheers > Ben > -- > I would rather have questions that cannot be answered, than answers that > cannot be questioned. -- Richard Feynman > > _______________________________________________ > 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 From brown.m at pm.me Sun May 28 15:22:25 2023 From: brown.m at pm.me (Melanie Brown) Date: Sun, 28 May 2023 15:22:25 +0000 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older In-Reply-To: References: Message-ID: Things work best when the packages you need, actually have the things you’re testing. ;) Cheers Melanie Brown On Sun, May 28, 2023 at 10:42, Brandon Allbery <[allbery.b at gmail.com](mailto:On Sun, May 28, 2023 at 10:42, Brandon Allbery < wrote: > Isn't this just `MonadFail` not existing in older GHC versions? You > need to override `fail` in the `Monad` instance instead of using GND. > > On Sun, May 28, 2023 at 10:36 AM Ben Franksen wrote: >> >> Hi Everyone >> >> I was trying to fix a bug in a large program (darcs) and stumbled over a >> problem that I cooked down to the minimal test program below. The issue >> here is that with ghc-8.6 and earlier, properly handling an invalid >> regular expression (here: the empty string) does not work: somehow >> something calls "error". With ghc-8.8 and later it works as expected. In >> both cases the latest releases of the regex packages are used. >> >> {-# LANGUAGE GeneralizedNewtypeDeriving #-} >> import Prelude hiding (fail) >> import Control.Monad.Fail >> import Control.Exception >> import Text.Regex.Base >> import Text.Regex.TDFA >> >> newtype RegexFail a = RegexFail { runRegexFail :: Either String a } >> deriving (Functor, Applicative, Monad) >> >> instance MonadFail RegexFail where >> fail = RegexFail . Left >> >> test :: RegexFail Regex >> test = makeRegexM "" >> >> main = >> handle (\(ErrorCall _) -> putStrLn "error call") $ >> case runRegexFail test of >> Left _ -> putStrLn "clean error handling" >> Right x -> print (matchM x "" :: Maybe Bool) >> >> > runghc-8.6 test2.hs √ >> error call >> > runghc-8.8 test2.hs √ >> clean error handling >> >> (1) Is this a known problem with ghc < 8.8 / base < 4.13? >> (2) Is there a work-around for older ghc versions? >> >> Cheers >> Ben >> -- >> I would rather have questions that cannot be answered, than answers that >> cannot be questioned. -- Richard Feynman >> >> _______________________________________________ >> 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 > _______________________________________________ > 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 28 20:13:41 2023 From: ben.franksen at online.de (Ben Franksen) Date: Sun, 28 May 2023 22:13:41 +0200 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older In-Reply-To: References: Message-ID: No. If MonadFail did not exist in ghc-8.6.5 then I would get a compiler error, right? I have compiled and run it with ghc versions back to 8.2.2. Furthermore, I did try to define the Monad instance manually, along with fail and I do get a compiler error in that case, with every ghc since 8.2.2: test2.hs:15:3: error: ‘fail’ is not a (visible) method of class ‘Monad’ | 15 | fail = RegexFail . Left The docs for MonadFail say "Since: base-4.9.0.0" which came with ghc-8.0. Am 28.05.23 um 16:42 schrieb Brandon Allbery: > Isn't this just `MonadFail` not existing in older GHC versions? You > need to override `fail` in the `Monad` instance instead of using GND. > > On Sun, May 28, 2023 at 10:36 AM Ben Franksen wrote: >> >> Hi Everyone >> >> I was trying to fix a bug in a large program (darcs) and stumbled over a >> problem that I cooked down to the minimal test program below. The issue >> here is that with ghc-8.6 and earlier, properly handling an invalid >> regular expression (here: the empty string) does not work: somehow >> something calls "error". With ghc-8.8 and later it works as expected. In >> both cases the latest releases of the regex packages are used. >> >> {-# LANGUAGE GeneralizedNewtypeDeriving #-} >> import Prelude hiding (fail) >> import Control.Monad.Fail >> import Control.Exception >> import Text.Regex.Base >> import Text.Regex.TDFA >> >> newtype RegexFail a = RegexFail { runRegexFail :: Either String a } >> deriving (Functor, Applicative, Monad) >> >> instance MonadFail RegexFail where >> fail = RegexFail . Left >> >> test :: RegexFail Regex >> test = makeRegexM "" >> >> main = >> handle (\(ErrorCall _) -> putStrLn "error call") $ >> case runRegexFail test of >> Left _ -> putStrLn "clean error handling" >> Right x -> print (matchM x "" :: Maybe Bool) >> >> > runghc-8.6 test2.hs √ >> error call >> > runghc-8.8 test2.hs √ >> clean error handling >> >> (1) Is this a known problem with ghc < 8.8 / base < 4.13? >> (2) Is there a work-around for older ghc versions? >> >> Cheers >> Ben >> -- >> I would rather have questions that cannot be answered, than answers that >> cannot be questioned. -- Richard Feynman >> >> _______________________________________________ >> 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. > > > -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From travis.cardwell at extrema.is Sun May 28 20:53:18 2023 From: travis.cardwell at extrema.is (Travis Cardwell) Date: Mon, 29 May 2023 05:53:18 +0900 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older In-Reply-To: References: Message-ID: The `fail` method was part of the `Monad` type class from GHC 8.0 (`base` `4.9.0.0`) until GHC 8.6 (`base` `4.12.0.0`). It was removed from GHC 8.8 (`base` `4.13.0.0`). There is information about this in the MonadFail Proposal (MFP): Cheers, Travis From ben.franksen at online.de Sun May 28 22:11:33 2023 From: ben.franksen at online.de (Ben Franksen) Date: Mon, 29 May 2023 00:11:33 +0200 Subject: [Haskell-cafe] regex problem with ghc-8.6 and older In-Reply-To: References: Message-ID: Thanks, this is helpful. It should have made me suspicious that I had to hide the fail from Prelude. What happens here is that for ghc-8.6 and earlier the fail that is called by regex-tdfa is not the one from class MonadFail but the one from class Monad, even though the MonadFail class exists. And apparently newtype deriving will create an instance that calls error (either because the instance Monad for Either String does or because of a default definition). So for ghc-8.6 and older I will have to write a bogus instance MonadFail (since makeRegexM requires it) and have to write out the Monad instance manually. Cheers Ben Am 28.05.23 um 22:53 schrieb Travis Cardwell via Haskell-Cafe: > The `fail` method was part of the `Monad` type class from GHC 8.0 > (`base` `4.9.0.0`) until GHC 8.6 (`base` `4.12.0.0`). > > > > It was removed from GHC 8.8 (`base` `4.13.0.0`). > > > > There is information about this in the MonadFail Proposal (MFP): > > > > Cheers, > > Travis > _______________________________________________ > 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. -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman From Graham.Hutton at nottingham.ac.uk Tue May 30 07:36:56 2023 From: Graham.Hutton at nottingham.ac.uk (Graham Hutton) Date: Tue, 30 May 2023 07:36:56 +0000 Subject: [Haskell-cafe] Call for Papers: JFP Special Issue on Program Calculation Message-ID: <960AA989-0CA3-4019-BEB6-D9CB6161B889@nottingham.ac.uk> Dear all, We're delighted to announce a Special Issue on Program Calculation for the Journal of Functional Programming. Please share, and submit your best papers! Best wishes, Graham Hutton and Nicolas Wu Guest Editors ================================================================== JFP Special Issue on Program Calculation We invite submissions to the Journal of Functional Programming Special Issue on Program Calculation: tinyurl.com/prog-calc Notification of intent : 20 October 2023 Submission deadline : 1 December 2023 SCOPE The idea of program calculation, in which programs are derived from specifications using equational reasoning techniques, has been a topic of interest in functional programming since its earliest days. In particular, the approach allows us to systematically discover how programs can be defined, while at the same time obtaining proofs that they are correct. The aim of this special issue is to document advances that have been made in the field of program calculation in recent years. TOPICS Full-length, archival-quality submissions are solicited on all aspects of program calculation and related topics. Specific topics of interest include but are not limited to: - Program derivation and transformation; - Inductive and co-inductive methods; - Recursion and co-recursion schemes; - Categorical and graphical methods; - Tool support and proof assistants; - Efficiency and resource usage; - Functional algorithm design; - Calculation case studies. The special issue will also consider papers on program calculation that are not traditional research papers. This may include pearls, surveys, tutorials or educational papers, which will be judged by the usual JFP standards for such submissions. Papers will be reviewed as regular JFP submissions, and acceptance in the special issue will be based on both JFP's quality standards and relevance to the theme. NOTIFICATION OF INTENT Authors must notify the special issue editors of their intent to submit by 20 October 2023. The notification of intent should be submitted by filling out the following form, which asks for data to help identify suitable reviewers: tinyurl.com/intent-to-submit If you miss the notification of intent deadline, but still wish to submit, please contact the special-issue editors. SUBMISSIONS Papers must be submitted by 1 December 2023. Submissions should be typeset in LaTeX using the JFP style file, and submitted through the JFP Manuscript Central system. Choose "Program Calculation" as the paper type, so it gets assigned to the special issue. Further author instructions are available from: tinyurl.com/JFP-instructions We welcome extended versions of conference or workshop papers. Such submissions must clearly describe the relationship with the initial publication, and must differ sufficiently that the author can assign copyright to Cambridge University Press. Prospective authors are welcome to discuss submissions with the editors to ensure compliance. SPECIAL-ISSUE EDITORS Graham Hutton Nicolas Wu IMPORTANT DATES We anticipate the following schedule: 20 October 2023 : Notification-of-intent deadline 1 December 2023 : Submission deadline 22 March 2024 : First round of reviews 12 July 2024 : Revision deadline 4 October 2024 : Second round of reviews, if applicable 29 November 2024 : Final versions due ================================================================== 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 olf at aatal-apotheke.de Wed May 31 11:25:06 2023 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Wed, 31 May 2023 13:25:06 +0200 Subject: [Haskell-cafe] property testing, point-free style Message-ID: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> Dear Cafe, The expression \x -> f x == g x is a testable property, as long as values for x can be randomly generated. For clarity I'd prefer a point-free style, e.g. f ≡ g Are there extensions to QuickCheck that let me write this? The QuickCheck package itself does not seem to contain such an operator. My current work-around is a  newtype ExtensionalEquality a b  that holds two functions of type (a -> b) and a Testable instance for it. But I've got a hunch that I re-invented some wheel here. (My ExtensionalEquality is isomorphic to  Refl (a -> b) (a -> b) but Refl ist conceptually about type equality, not term equality.) Thanks Olaf From ivanperezdominguez at gmail.com Wed May 31 12:36:01 2023 From: ivanperezdominguez at gmail.com (Ivan Perez) Date: Wed, 31 May 2023 05:36:01 -0700 Subject: [Haskell-cafe] property testing, point-free style In-Reply-To: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> References: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> Message-ID: Maybe I'm missing something, but can't you just define: (≡) f g = (f &&& g) >>^ (==) (You could also define it as: (≡) f g x = f x == g x) And use ≡ at will? Why do you need an instance or a newtype? Ivan On Wed, 31 May 2023 at 04:25, Olaf Klinke wrote: > Dear Cafe, > > The expression > > \x -> f x == g x > > is a testable property, as long as values for x can be randomly > generated. For clarity I'd prefer a point-free style, e.g. > > f ≡ g > > Are there extensions to QuickCheck that let me write this? The > QuickCheck package itself does not seem to contain such an operator. My > current work-around is a > newtype ExtensionalEquality a b > that holds two functions of type (a -> b) and a Testable instance for > it. But I've got a hunch that I re-invented some wheel here. (My > ExtensionalEquality is isomorphic to > Refl (a -> b) (a -> b) > but Refl ist conceptually about type equality, not term equality.) > > Thanks > Olaf > > _______________________________________________ > 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 lysxia at gmail.com Wed May 31 13:06:26 2023 From: lysxia at gmail.com (Li-yao Xia) Date: Wed, 31 May 2023 14:06:26 +0100 Subject: [Haskell-cafe] property testing, point-free style In-Reply-To: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> References: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> Message-ID: Hi Olaf, You might like quickcheck-higherorder, "A QuickCheck extension for properties of higher-order values." https://hackage.haskell.org/package/quickcheck-higherorder One of the key bits is a class for testable equality, which may have an instance for (a -> b), unlike Eq: |class TestEq a where (=?) :: a -> a -> Property ||| The package has more bells and whistles to further streamline writing properties that quantify over functions. If you only ever compare unary first-order functions, you really only need the single instance TestEq (a -> b), which you can extract as a self-contained operator: (=?) :: (Coarbitrary a, Show a, Arbitrary b, Eq b, Show b) => (a -> b) -> (a -> b) -> Property (=?) f g = property $ \x -> f x === g x Regards, Li-yao || On 2023-05-31 12:25 PM, Olaf Klinke wrote: Dear Cafe, The expression \x -> f x == g x is a testable property, as long as values for x can be randomly generated. For clarity I'd prefer a point-free style, e.g. f ≡ g Are there extensions to QuickCheck that let me write this? The QuickCheck package itself does not seem to contain such an operator. My current work-around is a newtype ExtensionalEquality a b that holds two functions of type (a -> b) and a Testable instance for it. But I've got a hunch that I re-invented some wheel here. (My ExtensionalEquality is isomorphic to Refl (a -> b) (a -> b) but Refl ist conceptually about type equality, not term equality.) Thanks Olaf _______________________________________________ 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 olf at aatal-apotheke.de Wed May 31 20:00:40 2023 From: olf at aatal-apotheke.de (Olaf Klinke) Date: Wed, 31 May 2023 22:00:40 +0200 Subject: [Haskell-cafe] property testing, point-free style In-Reply-To: References: <0626487deb20283260693c580cc8871a684d530b.camel@aatal-apotheke.de> Message-ID: On Wed, 2023-05-31 at 05:36 -0700, Ivan Perez wrote: > Maybe I'm missing something, but can't you just define: > > (≡) f g = (f &&& g) >>^ (==) > > (You could also define it as: (≡) f g x = f x == g x) > > And use ≡ at will? > > Why do you need an instance or a newtype? > > Ivan Hah, indeed. Stupid me. I was overthinking it and made the return type of (≡) a GADT with the Arbitrary constraint baked in, but that constraint is going to be checked at the call site anyways. Thanks! > > On Wed, 31 May 2023 at 04:25, Olaf Klinke wrote: > > > Dear Cafe, > > > > The expression > > > > \x -> f x == g x > > > > is a testable property, as long as values for x can be randomly > > generated. For clarity I'd prefer a point-free style, e.g. > > > > f ≡ g > > > > Are there extensions to QuickCheck that let me write this? The > > QuickCheck package itself does not seem to contain such an operator. My > > current work-around is a > >     newtype ExtensionalEquality a b > > that holds two functions of type (a -> b) and a Testable instance for > > it. But I've got a hunch that I re-invented some wheel here. (My > > ExtensionalEquality is isomorphic to > >     Refl (a -> b) (a -> b) > > but Refl ist conceptually about type equality, not term equality.) > > > > Thanks > > Olaf > > > > _______________________________________________ > > 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.