tag:blogger.com,1999:blog-7094652.post8513102686863799166..comments2024-03-23T14:36:09.980+00:00Comments on Neil Mitchell's Blog (Haskell etc): Coding NirvanaNeil Mitchellhttp://www.blogger.com/profile/13084722756124486154noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-7094652.post-20191485043087418432007-04-18T14:15:00.000+01:002007-04-18T14:15:00.000+01:00This is a well-known (but sadly underused) practic...This is a well-known (but sadly underused) practice typically referred to as "design by contract". It is a very powerful way to control the quality of a system when quality can be easily expressed in terms of invariants and conditional properties, as you describe.<BR/><BR/>Unfortunately, it's not really Nirvana - the next cycle of reincarnation involves a project where the quality constraints cannot be fully expressed as a contract ;-)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-7094652.post-49744637828163425862007-04-18T10:41:00.000+01:002007-04-18T10:41:00.000+01:00Good catch Gregor! I've updated the documentation,...Good catch Gregor! I've updated the documentation, it was just a verbal typo that is beyond the range of QuickCheckNeil Mitchellhttps://www.blogger.com/profile/13084722756124486154noreply@blogger.comtag:blogger.com,1999:blog-7094652.post-58386940847089405582007-04-18T06:31:00.000+01:002007-04-18T06:31:00.000+01:00I followed the link to the FilePath docs. Question...I followed the link to the FilePath docs. Question: when you say<BR/><BR/>dropExtension :: FilePath -> FilePath<BR/><BR/> Remove last extension, and any . following it.<BR/><BR/> dropExtension x == fst (splitExtension x)<BR/><BR/>shouldn't that be:<BR/><BR/>dropExtension :: FilePath -> FilePath<BR/><BR/> Remove last extension, and the "." preceding it.<BR/><BR/> dropExtension x == fst (splitExtension x)<BR/><BR/>based on the definition of spitExtension?Gregor Purdyhttps://www.blogger.com/profile/05241465311115829095noreply@blogger.com