Re: Revival: PROPOSAL: Literate haskell and module file names

2014-08-23 Thread Merijn Verstraaten
Right, given the lack of disagreement and past support for this I will 
implement whichever variant is simplest to implement/strikes my fancy and put a 
patch up on Trac.

Cheers,
Merijn

On 16 Aug 2014, at 14:23 , Carter Schonwald carter.schonw...@gmail.com wrote:
 i personally think the .format+lhs pattern/convention is a good one, and 
 prevents any misinterpretations that current plague literate tools + willl be 
 treated as an unknown format rather than eagerly as .format or .lhs
 
 
 On Sat, Aug 16, 2014 at 5:05 PM, Merijn Verstraaten mer...@inconsistent.nl 
 wrote:
 Hey Philip,
 
 This proposal is not because *GHC* needs to know anything about markdown/rST, 
 in fact, GHC is already perfectly happy to take a literate haskell files 
 that’s written in markdown, since it just strips the non-haskell bits and 
 only compiles the haskell code.
 
 The problem is OTHER tools. For example, I have literate haskell files for my 
 blog posts, how does my blog software know whether my lhs file is markdown, 
 rST, TeX, or what not? I can just name my files using anyway I want (like 
 “Foo.md.lhs”) to have these tools detect the format, but then GHC will no 
 longer compile my files.
 
 This is the problem I’m trying to solve with this proposal, once we settle on 
 some extension format like this, it’s trivial to patch (for example) pandoc 
 to use this to detect which contents are in the file.
 
 Cheers,
 Merijn
 
 
 On 16 Aug 2014, at 06:51 , p.k.f.holzensp...@utwente.nl wrote:
  Dear Merijn,
 
  Do you even need a separate extension or filename convention for this? 
  Can't you just call it lhs and expand the definition thereof to include 
  markdown? (I suggested something similar before, but objections were raised 
  that having too good and too broad an unlitter might lead to the bit-rot of 
  the flag to employ external unlitters. I didn't quite understand that 
  objection, but didn't pursue it)
 
  Regards,
  Philip
 
 
  
  Van: Glasgow-haskell-users glasgow-haskell-users-boun...@haskell.org 
  namens Merijn Verstraaten mer...@inconsistent.nl
  Verzonden: zaterdag 16 augustus 2014 00:40
  Aan: haskell-prime@haskell.org; glasgow-haskell-us...@haskell.org
  Onderwerp: Revival: PROPOSAL: Literate haskell and module file names
 
  Ola!
 
  I raised this proposal earlier this year and got to busy to follow up, this 
  week I was suddenly reminded and decided to reraise this. To summarise the 
  discussion up until this point:
 
  There was no real opposition to the general idea, the only real objection 
  to the original proposal was that “Foo.lhs.md” and “Foo.md.lhs” would 
  collide with the naming scheme used by JHC on case insensitive filesystems. 
  Alternative proposal raised during the discussion: Foo+md.lhs, 
  Foo.lhs+md” and “Foo.md+lhs”.
 
  According to MS documentation and testing the + should not be an issue on 
  windows, the + doesn’t collide with any other haskell compiler (at least, 
  not any I’m aware off) and since the report doesn’t specify any module name 
  resolution mechanism, it does not conflict with the report either.
 
  My personal preferences goes to either “.lhs+md” or “.md+lhs”, since GHC 
  currently tries every alternative in turn, I propose to just extend this 
  list to look for any file whose extension is “.lhs+*” or “.*+lhs”.
 
  Are there any objections to this? If not, I’m just going to produce a patch 
  + ticket as there were no real objections to the proposal last time.
 
  Cheers,
  Merijn
 
  On 16 Mar 2014, at 05:56 , Merijn Verstraaten mer...@inconsistent.nl 
  wrote:
  Ola!
 
  I didn't know what the most appropriate venue for this proposal was so I 
  crossposted to haskell-prime and glasgow-haskell-users, if this isn't the 
  right venue I welcome advice where to take this proposal.
 
  Currently the report does not specify the mapping between filenames and 
  module names (this is an issue in itself, it essentially makes writing 
  haskell code that's interoperable between compilers impossible, as you 
  can't know what directory layout each compiler expects). I believe that a 
  minimal specification *should* go into the report (hence, haskell-prime). 
  However, this is a separate issue from this proposal, so please start a 
  new thread rather than sidetracking this one :)
 
  The report only mentions that by convention .hs extensions imply normal 
  haskell and .lhs literate haskell (Section 10.4). In the absence of 
  guidance from the report GHC's convention of mapping module Foo.Bar.Baz to 
  Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that 
  exists. In general this standard is nice enough, but the mapping of 
  literate haskell is a bit inconvenient, it leaves it completelyl ambiguous 
  what the non-haskell content of said file is, which is annoying for tool 
  authors.
 
  Pandoc has adopted the policy of checking for further file extensions for 
  literate haskell source, e.g

Re: Revival: PROPOSAL: Literate haskell and module file names

2014-08-16 Thread Merijn Verstraaten
Hey Philip,

This proposal is not because *GHC* needs to know anything about markdown/rST, 
in fact, GHC is already perfectly happy to take a literate haskell files that’s 
written in markdown, since it just strips the non-haskell bits and only 
compiles the haskell code.

The problem is OTHER tools. For example, I have literate haskell files for my 
blog posts, how does my blog software know whether my lhs file is markdown, 
rST, TeX, or what not? I can just name my files using anyway I want (like 
“Foo.md.lhs”) to have these tools detect the format, but then GHC will no 
longer compile my files.

This is the problem I’m trying to solve with this proposal, once we settle on 
some extension format like this, it’s trivial to patch (for example) pandoc to 
use this to detect which contents are in the file.

Cheers,
Merijn


On 16 Aug 2014, at 06:51 , p.k.f.holzensp...@utwente.nl wrote:
 Dear Merijn,
 
 Do you even need a separate extension or filename convention for this? Can't 
 you just call it lhs and expand the definition thereof to include markdown? 
 (I suggested something similar before, but objections were raised that having 
 too good and too broad an unlitter might lead to the bit-rot of the flag to 
 employ external unlitters. I didn't quite understand that objection, but 
 didn't pursue it)
 
 Regards,
 Philip
 
 
 
 Van: Glasgow-haskell-users glasgow-haskell-users-boun...@haskell.org namens 
 Merijn Verstraaten mer...@inconsistent.nl
 Verzonden: zaterdag 16 augustus 2014 00:40
 Aan: haskell-prime@haskell.org; glasgow-haskell-us...@haskell.org
 Onderwerp: Revival: PROPOSAL: Literate haskell and module file names
 
 Ola!
 
 I raised this proposal earlier this year and got to busy to follow up, this 
 week I was suddenly reminded and decided to reraise this. To summarise the 
 discussion up until this point:
 
 There was no real opposition to the general idea, the only real objection to 
 the original proposal was that “Foo.lhs.md” and “Foo.md.lhs” would collide 
 with the naming scheme used by JHC on case insensitive filesystems. 
 Alternative proposal raised during the discussion: Foo+md.lhs, Foo.lhs+md” 
 and “Foo.md+lhs”.
 
 According to MS documentation and testing the + should not be an issue on 
 windows, the + doesn’t collide with any other haskell compiler (at least, not 
 any I’m aware off) and since the report doesn’t specify any module name 
 resolution mechanism, it does not conflict with the report either.
 
 My personal preferences goes to either “.lhs+md” or “.md+lhs”, since GHC 
 currently tries every alternative in turn, I propose to just extend this list 
 to look for any file whose extension is “.lhs+*” or “.*+lhs”.
 
 Are there any objections to this? If not, I’m just going to produce a patch + 
 ticket as there were no real objections to the proposal last time.
 
 Cheers,
 Merijn
 
 On 16 Mar 2014, at 05:56 , Merijn Verstraaten mer...@inconsistent.nl wrote:
 Ola!
 
 I didn't know what the most appropriate venue for this proposal was so I 
 crossposted to haskell-prime and glasgow-haskell-users, if this isn't the 
 right venue I welcome advice where to take this proposal.
 
 Currently the report does not specify the mapping between filenames and 
 module names (this is an issue in itself, it essentially makes writing 
 haskell code that's interoperable between compilers impossible, as you can't 
 know what directory layout each compiler expects). I believe that a minimal 
 specification *should* go into the report (hence, haskell-prime). However, 
 this is a separate issue from this proposal, so please start a new thread 
 rather than sidetracking this one :)
 
 The report only mentions that by convention .hs extensions imply normal 
 haskell and .lhs literate haskell (Section 10.4). In the absence of guidance 
 from the report GHC's convention of mapping module Foo.Bar.Baz to 
 Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that 
 exists. In general this standard is nice enough, but the mapping of literate 
 haskell is a bit inconvenient, it leaves it completelyl ambiguous what the 
 non-haskell content of said file is, which is annoying for tool authors.
 
 Pandoc has adopted the policy of checking for further file extensions for 
 literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs gets 
 interpreted as being reStructured Text with literate haskell and .md.lhs is 
 Markdown with literate haskell. Unfortunately GHC currently maps filenames 
 like this to the module names Foo.rst and Foo.md, breaking anything that 
 wants to import the module Foo.
 
 I would like to propose allowing an optional extra extension in the pandoc 
 style for literate haskell files, mapping Foo.rst.lhs to module name Foo. 
 This is a backwards compatible change as there is no way for Foo.rst.lhs to 
 be a valid module in the current GHC convention. Foo.rst.lhs would map to 
 module name Foo.rst but module name Foo.rst

Revival: PROPOSAL: Literate haskell and module file names

2014-08-15 Thread Merijn Verstraaten
Ola!

I raised this proposal earlier this year and got to busy to follow up, this 
week I was suddenly reminded and decided to reraise this. To summarise the 
discussion up until this point:

There was no real opposition to the general idea, the only real objection to 
the original proposal was that “Foo.lhs.md” and “Foo.md.lhs” would collide with 
the naming scheme used by JHC on case insensitive filesystems. Alternative 
proposal raised during the discussion: Foo+md.lhs, Foo.lhs+md” and 
“Foo.md+lhs”. 

According to MS documentation and testing the + should not be an issue on 
windows, the + doesn’t collide with any other haskell compiler (at least, not 
any I’m aware off) and since the report doesn’t specify any module name 
resolution mechanism, it does not conflict with the report either.

My personal preferences goes to either “.lhs+md” or “.md+lhs”, since GHC 
currently tries every alternative in turn, I propose to just extend this list 
to look for any file whose extension is “.lhs+*” or “.*+lhs”.

Are there any objections to this? If not, I’m just going to produce a patch + 
ticket as there were no real objections to the proposal last time.

Cheers,
Merijn

On 16 Mar 2014, at 05:56 , Merijn Verstraaten mer...@inconsistent.nl wrote:
 Ola!
 
 I didn't know what the most appropriate venue for this proposal was so I 
 crossposted to haskell-prime and glasgow-haskell-users, if this isn't the 
 right venue I welcome advice where to take this proposal.
 
 Currently the report does not specify the mapping between filenames and 
 module names (this is an issue in itself, it essentially makes writing 
 haskell code that's interoperable between compilers impossible, as you can't 
 know what directory layout each compiler expects). I believe that a minimal 
 specification *should* go into the report (hence, haskell-prime). However, 
 this is a separate issue from this proposal, so please start a new thread 
 rather than sidetracking this one :)
 
 The report only mentions that by convention .hs extensions imply normal 
 haskell and .lhs literate haskell (Section 10.4). In the absence of guidance 
 from the report GHC's convention of mapping module Foo.Bar.Baz to 
 Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that 
 exists. In general this standard is nice enough, but the mapping of literate 
 haskell is a bit inconvenient, it leaves it completelyl ambiguous what the 
 non-haskell content of said file is, which is annoying for tool authors.
 
 Pandoc has adopted the policy of checking for further file extensions for 
 literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs gets 
 interpreted as being reStructured Text with literate haskell and .md.lhs is 
 Markdown with literate haskell. Unfortunately GHC currently maps filenames 
 like this to the module names Foo.rst and Foo.md, breaking anything that 
 wants to import the module Foo.
 
 I would like to propose allowing an optional extra extension in the pandoc 
 style for literate haskell files, mapping Foo.rst.lhs to module name Foo. 
 This is a backwards compatible change as there is no way for Foo.rst.lhs to 
 be a valid module in the current GHC convention. Foo.rst.lhs would map to 
 module name Foo.rst but module name Foo.rst maps to filename Foo/rst.hs 
 which is not a valid haskell module anyway as the rst is lowercase and module 
 names have to start with an uppercase letter.
 
 Pros:
 - Tool authors can more easily determine non-haskell content of literate 
 haskell files
 - Currently valid module names will not break
 - Report doesn't specify behaviour, so GHC can do whatever it likes
 
 Cons:
 - Someone has to implement it
 - ??
 
 Discussion: 4 weeks
 
 Cheers,
 Merijn
 



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: PROPOSAL: Literate haskell and module file names

2014-03-26 Thread Simon Marlow

On 17/03/2014 13:08, Edward Kmett wrote:

Foo+rst.lhs does nicely dodge the collision with jhc.

How does ghc do the search now? By trying each alternative in turn?


Yes - see compiler/main/Finder.hs

Cheers,
Simon







On Sun, Mar 16, 2014 at 1:14 PM, Merijn Verstraaten
mer...@inconsistent.nl mailto:mer...@inconsistent.nl wrote:

I agree that this could collide, see my beginning remark that I
believe that the report should provide a minimal specification how
to map modules to filenames and vice versa.

Anyhoo, I'm not married to this specific suggestion. Carter
suggested Foo+rst.lhs on IRC, other options would be Foo.rst+lhs
or Foo.lhs+rst, I don't particularly care what as long as we pick
something. Patching tools to support whatever solution we pick
should be trivial.

Cheers,
Merijn

On Mar 16, 2014, at 16:41 , Edward Kmett wrote:

One problem with Foo.*.hs or even Foo.md.hs mapping to the module
name Foo is that as I recall JHC will look for Data.Vector in
Data.Vector.hs as well as Data/Vector.hs

This means that on a case insensitive file system
Foo.MD.hs matches both conventions.

Do I want to block an change to GHC because of an incompatible
change in another compiler? Not sure, but I at least want to raise
the issue so it can be discussed.

Another small issue is that this means you need to actually scan
the directory rather than look for particular file names, but off
my head really I don't expect directories to be full enough for
that to be a performance problem.

-Edward



On Sun, Mar 16, 2014 at 8:56 AM, Merijn Verstraaten
mer...@inconsistent.nl mailto:mer...@inconsistent.nl wrote:

Ola!

I didn't know what the most appropriate venue for this
proposal was so I crossposted to haskell-prime and
glasgow-haskell-users, if this isn't the right venue I welcome
advice where to take this proposal.

Currently the report does not specify the mapping between
filenames and module names (this is an issue in itself, it
essentially makes writing haskell code that's interoperable
between compilers impossible, as you can't know what directory
layout each compiler expects). I believe that a minimal
specification *should* go into the report (hence,
haskell-prime). However, this is a separate issue from this
proposal, so please start a new thread rather than
sidetracking this one :)

The report only mentions that by convention .hs extensions
imply normal haskell and .lhs literate haskell (Section 10.4).
In the absence of guidance from the report GHC's convention of
mapping module Foo.Bar.Baz to Foo/Bar/Baz.hs or
Foo/Bar/Baz.lhs seems the only sort of standard that exists.
In general this standard is nice enough, but the mapping of
literate haskell is a bit inconvenient, it leaves it
completelyl ambiguous what the non-haskell content of said
file is, which is annoying for tool authors.

Pandoc has adopted the policy of checking for further file
extensions for literate haskell source, e.g. Foo.rst.lhs and
Foo.md.lhs. Here .rst.lhs gets interpreted as being
reStructured Text with literate haskell and .md.lhs is
Markdown with literate haskell. Unfortunately GHC currently
maps filenames like this to the module names Foo.rst and
Foo.md, breaking anything that wants to import the module Foo.

I would like to propose allowing an optional extra extension
in the pandoc style for literate haskell files, mapping
Foo.rst.lhs to module name Foo. This is a backwards compatible
change as there is no way for Foo.rst.lhs to be a valid module
in the current GHC convention. Foo.rst.lhs would map to module
name Foo.rst but module name Foo.rst maps to filename
Foo/rst.hs which is not a valid haskell module anyway as the
rst is lowercase and module names have to start with an
uppercase letter.

Pros:
 - Tool authors can more easily determine non-haskell content
of literate haskell files
 - Currently valid module names will not break
 - Report doesn't specify behaviour, so GHC can do whatever it
likes

Cons:
 - Someone has to implement it
 - ??

Discussion: 4 weeks

Cheers,
Merijn


___
Glasgow-haskell-users mailing list
glasgow-haskell-us...@haskell.org
mailto:glasgow-haskell-us...@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users







___
Glasgow-haskell-users mailing list
glasgow-haskell-us...@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users



Re: PROPOSAL: Literate haskell and module file names

2014-03-17 Thread Edward Kmett
Foo+rst.lhs does nicely dodge the collision with jhc.

How does ghc do the search now? By trying each alternative in turn?




On Sun, Mar 16, 2014 at 1:14 PM, Merijn Verstraaten
mer...@inconsistent.nlwrote:

 I agree that this could collide, see my beginning remark that I believe
 that the report should provide a minimal specification how to map modules
 to filenames and vice versa.

 Anyhoo, I'm not married to this specific suggestion. Carter suggested
 Foo+rst.lhs on IRC, other options would be Foo.rst+lhs or
 Foo.lhs+rst, I don't particularly care what as long as we pick something.
 Patching tools to support whatever solution we pick should be trivial.

 Cheers,
 Merijn

 On Mar 16, 2014, at 16:41 , Edward Kmett wrote:

 One problem with Foo.*.hs or even Foo.md.hs mapping to the module name Foois 
 that as I recall JHC will look for
 Data.Vector in Data.Vector.hs as well as Data/Vector.hs

 This means that on a case insensitive file system Foo.MD.hs matches both
 conventions.

 Do I want to block an change to GHC because of an incompatible change in
 another compiler? Not sure, but I at least want to raise the issue so it
 can be discussed.

 Another small issue is that this means you need to actually scan the
 directory rather than look for particular file names, but off my head
 really I don't expect directories to be full enough for that to be a
 performance problem.

 -Edward



 On Sun, Mar 16, 2014 at 8:56 AM, Merijn Verstraaten 
 mer...@inconsistent.nl wrote:

 Ola!

 I didn't know what the most appropriate venue for this proposal was so I
 crossposted to haskell-prime and glasgow-haskell-users, if this isn't the
 right venue I welcome advice where to take this proposal.

 Currently the report does not specify the mapping between filenames and
 module names (this is an issue in itself, it essentially makes writing
 haskell code that's interoperable between compilers impossible, as you
 can't know what directory layout each compiler expects). I believe that a
 minimal specification *should* go into the report (hence, haskell-prime).
 However, this is a separate issue from this proposal, so please start a new
 thread rather than sidetracking this one :)

 The report only mentions that by convention .hs extensions imply normal
 haskell and .lhs literate haskell (Section 10.4). In the absence of
 guidance from the report GHC's convention of mapping module Foo.Bar.Baz to
 Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that
 exists. In general this standard is nice enough, but the mapping of
 literate haskell is a bit inconvenient, it leaves it completelyl ambiguous
 what the non-haskell content of said file is, which is annoying for tool
 authors.

 Pandoc has adopted the policy of checking for further file extensions for
 literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs
 gets interpreted as being reStructured Text with literate haskell and
 .md.lhs is Markdown with literate haskell. Unfortunately GHC currently maps
 filenames like this to the module names Foo.rst and Foo.md, breaking
 anything that wants to import the module Foo.

 I would like to propose allowing an optional extra extension in the
 pandoc style for literate haskell files, mapping Foo.rst.lhs to module name
 Foo. This is a backwards compatible change as there is no way for
 Foo.rst.lhs to be a valid module in the current GHC convention. Foo.rst.lhs
 would map to module name Foo.rst but module name Foo.rst maps to
 filename Foo/rst.hs which is not a valid haskell module anyway as the rst
 is lowercase and module names have to start with an uppercase letter.

 Pros:
  - Tool authors can more easily determine non-haskell content of literate
 haskell files
  - Currently valid module names will not break
  - Report doesn't specify behaviour, so GHC can do whatever it likes

 Cons:
  - Someone has to implement it
  - ??

 Discussion: 4 weeks

 Cheers,
 Merijn


 ___
 Glasgow-haskell-users mailing list
 glasgow-haskell-us...@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users




___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: PROPOSAL: Literate haskell and module file names

2014-03-17 Thread Brandon Allbery
On Mon, Mar 17, 2014 at 9:08 AM, Edward Kmett ekm...@gmail.com wrote:

 Foo+rst.lhs does nicely dodge the collision with jhc.


Is this legal on Windows?

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: PROPOSAL: Literate haskell and module file names

2014-03-17 Thread Sven Panne
2014-03-17 14:22 GMT+01:00 Brandon Allbery allber...@gmail.com:
 On Mon, Mar 17, 2014 at 9:08 AM, Edward Kmett ekm...@gmail.com wrote:

 Foo+rst.lhs does nicely dodge the collision with jhc.


 Is this legal on Windows?

According to 
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
it is, although I can't test this at the moment.
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


PROPOSAL: Literate haskell and module file names

2014-03-16 Thread Merijn Verstraaten
Ola!

I didn't know what the most appropriate venue for this proposal was so I 
crossposted to haskell-prime and glasgow-haskell-users, if this isn't the right 
venue I welcome advice where to take this proposal.

Currently the report does not specify the mapping between filenames and module 
names (this is an issue in itself, it essentially makes writing haskell code 
that's interoperable between compilers impossible, as you can't know what 
directory layout each compiler expects). I believe that a minimal specification 
*should* go into the report (hence, haskell-prime). However, this is a separate 
issue from this proposal, so please start a new thread rather than sidetracking 
this one :)

The report only mentions that by convention .hs extensions imply normal 
haskell and .lhs literate haskell (Section 10.4). In the absence of guidance 
from the report GHC's convention of mapping module Foo.Bar.Baz to 
Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that exists. 
In general this standard is nice enough, but the mapping of literate haskell is 
a bit inconvenient, it leaves it completelyl ambiguous what the non-haskell 
content of said file is, which is annoying for tool authors.

Pandoc has adopted the policy of checking for further file extensions for 
literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs gets 
interpreted as being reStructured Text with literate haskell and .md.lhs is 
Markdown with literate haskell. Unfortunately GHC currently maps filenames like 
this to the module names Foo.rst and Foo.md, breaking anything that wants to 
import the module Foo.

I would like to propose allowing an optional extra extension in the pandoc 
style for literate haskell files, mapping Foo.rst.lhs to module name Foo. This 
is a backwards compatible change as there is no way for Foo.rst.lhs to be a 
valid module in the current GHC convention. Foo.rst.lhs would map to module 
name Foo.rst but module name Foo.rst maps to filename Foo/rst.hs which is 
not a valid haskell module anyway as the rst is lowercase and module names have 
to start with an uppercase letter.

Pros:
 - Tool authors can more easily determine non-haskell content of literate 
haskell files
 - Currently valid module names will not break
 - Report doesn't specify behaviour, so GHC can do whatever it likes

Cons:
 - Someone has to implement it
 - ??

Discussion: 4 weeks

Cheers,
Merijn



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: PROPOSAL: Literate haskell and module file names

2014-03-16 Thread Edward Kmett
One problem with Foo.*.hs or even Foo.md.hs mapping to the module name
Foois that as I recall JHC will look for
Data.Vector in Data.Vector.hs as well as Data/Vector.hs

This means that on a case insensitive file system Foo.MD.hs matches both
conventions.

Do I want to block an change to GHC because of an incompatible change in
another compiler? Not sure, but I at least want to raise the issue so it
can be discussed.

Another small issue is that this means you need to actually scan the
directory rather than look for particular file names, but off my head
really I don't expect directories to be full enough for that to be a
performance problem.

-Edward



On Sun, Mar 16, 2014 at 8:56 AM, Merijn Verstraaten
mer...@inconsistent.nlwrote:

 Ola!

 I didn't know what the most appropriate venue for this proposal was so I
 crossposted to haskell-prime and glasgow-haskell-users, if this isn't the
 right venue I welcome advice where to take this proposal.

 Currently the report does not specify the mapping between filenames and
 module names (this is an issue in itself, it essentially makes writing
 haskell code that's interoperable between compilers impossible, as you
 can't know what directory layout each compiler expects). I believe that a
 minimal specification *should* go into the report (hence, haskell-prime).
 However, this is a separate issue from this proposal, so please start a new
 thread rather than sidetracking this one :)

 The report only mentions that by convention .hs extensions imply normal
 haskell and .lhs literate haskell (Section 10.4). In the absence of
 guidance from the report GHC's convention of mapping module Foo.Bar.Baz to
 Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that
 exists. In general this standard is nice enough, but the mapping of
 literate haskell is a bit inconvenient, it leaves it completelyl ambiguous
 what the non-haskell content of said file is, which is annoying for tool
 authors.

 Pandoc has adopted the policy of checking for further file extensions for
 literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs
 gets interpreted as being reStructured Text with literate haskell and
 .md.lhs is Markdown with literate haskell. Unfortunately GHC currently maps
 filenames like this to the module names Foo.rst and Foo.md, breaking
 anything that wants to import the module Foo.

 I would like to propose allowing an optional extra extension in the pandoc
 style for literate haskell files, mapping Foo.rst.lhs to module name Foo.
 This is a backwards compatible change as there is no way for Foo.rst.lhs to
 be a valid module in the current GHC convention. Foo.rst.lhs would map to
 module name Foo.rst but module name Foo.rst maps to filename
 Foo/rst.hs which is not a valid haskell module anyway as the rst is
 lowercase and module names have to start with an uppercase letter.

 Pros:
  - Tool authors can more easily determine non-haskell content of literate
 haskell files
  - Currently valid module names will not break
  - Report doesn't specify behaviour, so GHC can do whatever it likes

 Cons:
  - Someone has to implement it
  - ??

 Discussion: 4 weeks

 Cheers,
 Merijn


 ___
 Glasgow-haskell-users mailing list
 glasgow-haskell-us...@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: PROPOSAL: Literate haskell and module file names

2014-03-16 Thread Merijn Verstraaten
I agree that this could collide, see my beginning remark that I believe that 
the report should provide a minimal specification how to map modules to 
filenames and vice versa.

Anyhoo, I'm not married to this specific suggestion. Carter suggested 
Foo+rst.lhs on IRC, other options would be Foo.rst+lhs or Foo.lhs+rst, I 
don't particularly care what as long as we pick something. Patching tools to 
support whatever solution we pick should be trivial.

Cheers,
Merijn

On Mar 16, 2014, at 16:41 , Edward Kmett wrote:
 One problem with Foo.*.hs or even Foo.md.hs mapping to the module name Foo is 
 that as I recall JHC will look for Data.Vector in Data.Vector.hs as well as 
 Data/Vector.hs
 
 This means that on a case insensitive file system Foo.MD.hs matches both 
 conventions.
 
 Do I want to block an change to GHC because of an incompatible change in 
 another compiler? Not sure, but I at least want to raise the issue so it can 
 be discussed.
 
 Another small issue is that this means you need to actually scan the 
 directory rather than look for particular file names, but off my head really 
 I don't expect directories to be full enough for that to be a performance 
 problem.
 
 -Edward
 
 
 
 On Sun, Mar 16, 2014 at 8:56 AM, Merijn Verstraaten mer...@inconsistent.nl 
 wrote:
 Ola!
 
 I didn't know what the most appropriate venue for this proposal was so I 
 crossposted to haskell-prime and glasgow-haskell-users, if this isn't the 
 right venue I welcome advice where to take this proposal.
 
 Currently the report does not specify the mapping between filenames and 
 module names (this is an issue in itself, it essentially makes writing 
 haskell code that's interoperable between compilers impossible, as you can't 
 know what directory layout each compiler expects). I believe that a minimal 
 specification *should* go into the report (hence, haskell-prime). However, 
 this is a separate issue from this proposal, so please start a new thread 
 rather than sidetracking this one :)
 
 The report only mentions that by convention .hs extensions imply normal 
 haskell and .lhs literate haskell (Section 10.4). In the absence of guidance 
 from the report GHC's convention of mapping module Foo.Bar.Baz to 
 Foo/Bar/Baz.hs or Foo/Bar/Baz.lhs seems the only sort of standard that 
 exists. In general this standard is nice enough, but the mapping of literate 
 haskell is a bit inconvenient, it leaves it completelyl ambiguous what the 
 non-haskell content of said file is, which is annoying for tool authors.
 
 Pandoc has adopted the policy of checking for further file extensions for 
 literate haskell source, e.g. Foo.rst.lhs and Foo.md.lhs. Here .rst.lhs gets 
 interpreted as being reStructured Text with literate haskell and .md.lhs is 
 Markdown with literate haskell. Unfortunately GHC currently maps filenames 
 like this to the module names Foo.rst and Foo.md, breaking anything that 
 wants to import the module Foo.
 
 I would like to propose allowing an optional extra extension in the pandoc 
 style for literate haskell files, mapping Foo.rst.lhs to module name Foo. 
 This is a backwards compatible change as there is no way for Foo.rst.lhs to 
 be a valid module in the current GHC convention. Foo.rst.lhs would map to 
 module name Foo.rst but module name Foo.rst maps to filename Foo/rst.hs 
 which is not a valid haskell module anyway as the rst is lowercase and module 
 names have to start with an uppercase letter.
 
 Pros:
  - Tool authors can more easily determine non-haskell content of literate 
 haskell files
  - Currently valid module names will not break
  - Report doesn't specify behaviour, so GHC can do whatever it likes
 
 Cons:
  - Someone has to implement it
  - ??
 
 Discussion: 4 weeks
 
 Cheers,
 Merijn
 
 
 ___
 Glasgow-haskell-users mailing list
 glasgow-haskell-us...@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
 
 



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime