= Status' (Feb 2007) = [[PageOutline]] This page captures the status of the Haskell' effort as of February 2007. At the moment, this means capturing the current status of the "in" proposals identified by [wiki:StrawPoll-2]. See also the [http://darcs.haskell.org/haskell-prime-report/report/haskell-prime-draft.html draft report]. == Summary == Since the Haskell Workshop last year, the Haskell community has documented (on this wiki) over 70 proposals for changes to Haskell 98. In March of this year, two subcommittees were established to focus on concurrency and the class system - two difficult areas that are important to the success of Haskell'. The committee has also used StrawPolls to filter and discuss the universe of proposals that has been gathered. Based on the most recent straw poll, 12 proposals (listed in the table at the bottom of the page) have been identified that are expected to get into Haskell' (over 2/3 of the committee in favor). An additional 19 proposals seem likely to get into Haskell' (based on slightly weaker criteria). Members of the committee conflict on 9 of the remaining proposals, and their status will be determined during the writing process. The remaining proposals are not expected to be part of Haskell'. == Concurrency == The concurrency support in Haskell' will be based on the Control.Concurrent library, with minor modifications. There will be a thread-safe interface for mutable state, suitable for use in library code that does not otherwise use concurrency (though what it will be based on is an open issue). There will also be independent FFI annotations for specifying whether foreign calls are concurrent (with other Haskell threads) and reentrant. Bound threads will not be required by the concurrency standard, but they will be an allowed extension with a specified meaning. Open issues include whether standard will require preemptive concurrency, the syntax of the new FFI annotations and the memory-model semantics of IORefs. == Class system == The work on the class system has focused on resolving the MultiParamTypeClassesDilemma. The core of the dilemma is that multi-parameter typeclasses are a popular extension that is strongly desired for Haskell'. However, many important uses of MPTCs (like the monad transformer library) require additional extensions to resolve ambiguities in their typechecking. Historically, FunctionalDependencies have been used for this purpose, but they are very tricky to implement and are also difficult to specify in a way that guarantees the termination of typechecking. AssociatedTypes are a possible replacement, but our current implementation experience with them is very limited. The subcommittee has explored several ways to resolve this dilemma (including restricted FDs, fast-tracked ATs and FDs as a "blessed" extension), but, so far, no consensus has emerged. Our current plan is to focus on writing other parts of the Haskell' standard, in the hopes that additional implementation experience with ATs will clarify the situation. == Libraries == Thus far, libraries have been an underemphasized portion of the Haskell' effort (only 7 of the 70+ proposals have significant library content). However, there is a consensus that a revised standard library is an important part of the Haskell' effort. The current plan is to focus on starting to write the language portions of the standard first, since we have a substantial amount of work to do there which requires focused attention. After that effort is well underway, a companion library effort will begin. Several members of the committee have volunteered for this effort and additional volunteers will be needed. == "definitely-in" Proposal Status == || Description || Ticket || Writers || Draft report text || Currently open issues || || || || || || add some kind of [wiki:Concurrency] || #74 || IJ, SM, || [wiki:Concurrency/DraftReportText on wiki] || cooperative or preemptive || || || JM || || foreign call annotation syntax || || || || || semantics of IORefs || || || || || || add ForeignFunctionInterface || #35 || MC, SM || See addendum || transparent marshalling of newtypes || || || || || || add multi-parameter type classes (MultiParamTypeClasses) || #49 || MS || || MultiParamTypeClassesDilemma || || || || || || add [wiki:RankNTypes] or [wiki:Rank2Types] || #60 || AL || || RankN or Rank2? || || || || || || add PolymorphicComponents || #57 || AL || [http://darcs.haskell.org/haskell-prime-report/report/haskell-prime-draft.html Draft available] || dependency on Rank2Types or RankNTypes || || || || || || add ExistentialQuantification (existential components) || #26 || AL, MS, SJT || || syntax of existentials || || || || || || add HierarchicalModules || #24 || IJ, BH, MW || See addendum || None || || || || || || add EmptyDataDeclarations || #25 || BH, HN || || dependency on KindAnnotations || || || || || || DoAndIfThenElse || #23 || SM, HN || Fixed ''if'' in draft || For case-statements too? || || || || || || fix comment syntax grammar (LineCommentSyntax) || #42 || SM || Fixed in draft || None || || || || || || add PatternGuards || #56 || RN, DS || Fixed in draft || None || || || || || || add InfixTypeConstructors || #78 || BH, AL || || None || || || || || == "probably-in" Proposal Status == || Description || Ticket || Writers || Draft report text || Currently open issues || || || || || || allow TypeSynonymInstances || #70 || SJT || || superseded by NewtypeDeriving? || || || || || not very useful without FlexibleInstances and/or OverlappingInstances || || || || || || RelaxedDependencyAnalysis || #65 || HN, MS || || None || || || || || || ImpreciseExceptions || #39 || || || may require a standard deepSeq to be usable || || || || || || NondecreasingIndentation || #53 || SM || || None || || || || || || fix the lexical syntax for QualifiedIdentifiers || #39 || SM || || permit qualified identifiers in definitions? || || || || || || FlexibleInstances || #32 || || || choice of instance conditions for termination of typechecking || || || || || poor interaction with NewtypeDeriving? || || || || || || add NewPragmas || #51 || JM || || choose specific pragmas to standardize || || || || || || make [wiki:Underscore] caseless || #72 || RN || || treatment of underscore-only identifiers || || || || || || BangPatterns || #76 || || || top-level bang patterns || || || || || interaction with ! as an operator || || || || || bang-pattern polymorphism || || || || || existentials and bang patterns || || || || || || ScopedTypeVariables || #67, #81 || MS || || specification of syntax that binds type variables || || || || || || generalized deriving for newtype (NewtypeDeriving) || #52 || JM || || specification that does not reference "the same representation" || || || || || overlap with TypeSynonymInstances || remove FixityResolution from the context-free grammar || #30 || SM || || None || || || || || || improve [wiki:Defaulting] rules || #21 || || || scope of default clauses || || || || || impact on existing defaults || || || || || || KindAnnotations || #84 || BH, AL || || None || || || || || || MonomorphicPatternBindings || #103 || RN || || treatment of pattern bindings with explicit type signatures || || || || || [wiki:Organizing_The_Proposals This page] organizes the above proposals in related categories. ---- Member key: * IJ Isaac Jones (co-editor) * JL John Launchbury (co-editor) * MC Manuel M T Chakravarty * JG John Goerzen * BH Bastiaan Heeren * AL Andres Loeh * SM Simon Marlow * JM John Meacham This * RN Ravi Nanavati * HN Henrik Nilsson * RP Ross Paterson * SPJ Simon Peyton-Jones * DS Don Stewart * MS Martin Sulzmann <> * AT Audrey Tang * SJT Simon J. Thompson * MW Malcolm Wallace * SW Stephanie Weirich