úÎ*,'š%      !"#$None!"%2Mean a name of a value constructor and its records&4Mean names of a data type and its value constructors ÿ data IOException' a = IOException' { ioExceptionCause :: String , ioExceptionClue :: a } | FileNotFoundException { fileNotFoundExceptionCause :: String , fileNotFoundExceptionClue :: a } ==> DatatypeNames { typeName = mkName  IOException'K , constructors = [ ValueConstructor { constrName =  IOException'« , causeRecordName = mkName "ioExceptionCause" , clueRecordName = mkName "ioExceptionClue" } , ValueConstructor { constrName = FileNotFoundException˜ , causeRecordName = mkName "fileNotFoundExceptionCause" , clueRecordName = mkName "fileNotFoundExceptionClue" } ] } 'Create the value of  DatatypeNamesJ by the type name. That type name will be executed the instantiation for  Exception.typeName and  constrNamesD elements must be non empty string. If it is given, create Nothing.($A natural strategy of the evaluation@Declare simple concrete exception data type in the compile time.If the empty list is given to  constrNames, create empty data type.typeName and  constrNames must be PascalCase (e.g>  IOException', IndexOutOfBoundsException4. NG> "ioException'", "indexOutOfBoundsException") .)Convert string of  PascalCase to  camelCase . If no  PascalCaseG string or multi byte string is given, undefined behavior is happended.pascalToCamelCase "IOException" "ioException" pascalToCamelCase "IOException'""ioException'"$pascalToCamelCase "FOO2BarException""foO2BarException" pascalToCamelCase "I2SException""i2SException"$pascalToCamelCase "Foo2BarException""foo2BarException"-pascalToCamelCase "IndexOutOfBoundsException""indexOutOfBoundsException"-pascalToCamelCase "IllegalArgumentException'""illegalArgumentException'"pascalToCamelCase "Exception1" "exception1"%*+,-&./0'()%*+,-&./0'()NoneAn other of these exceptionsThis should be named by  PascalCase for show, for example:  MyOperation, Database*The message for the cause of the exception @The clue of the exception. This can be anything of Show instance <A constructor for GeneralException but doesn't take the clue 1 !"#  !"  !" 1 !"#2      !"#$%&'($)*+%,-./3throwable-exceptions-0.1.0.9-L5Gvc0WtO9aDG7zLnlVgAKControl.Exception.Throwable.THControl.Exception.ThrowableValueConstructorName DatatypeNamedeclareException$fShowValueConstructor$fShowDatatypeNamesGeneralException exceptionNameexceptionCause exceptionCluegeneralException$fExceptionGeneralException$fShowGeneralException IOException'FileNotFoundExceptionioExceptionCause'ioExceptionClue'fileNotFoundExceptionCausefileNotFoundExceptionClue ioException'$fExceptionIOException'$fShowIOException'IndexOutOfBoundsExceptionindexOutOfBoundsExceptionCauseindexOutOfBoundsExceptionClueindexOutOfBoundsException$$fExceptionIndexOutOfBoundsException$fShowIndexOutOfBoundsExceptionIllegalArgumentExceptionillegalArgumentExceptionCauseillegalArgumentExceptionClueillegalArgumentException#$fExceptionIllegalArgumentException$fShowIllegalArgumentExceptionValueConstructor DatatypeNamesgetDatatypeNamesnoBangpascalToCamelCaseconstructorNamecauseRecordNameclueRecordName datatypeName constructorsfileNotFoundException