[Haskell-cafe] Having trouble with zip12..

Michael Feathers mfeathers at mindspring.com
Sun Jul 6 16:58:55 EDT 2008


Sorry guys.  I was just bored on a Sunday afternoon so I thought I'd 
type up a little joke.  I thought to myself "Gee, how outrageous can I 
make it?"

1) Using and debugging a zip12 function.
2) That fails only on 'take 5' (Brubeck fans take note)
3) Has some absurd arguments like (nub . nub)
4) Is embedded in an air traffic control system
5) Is written in a Microsoft variant of Haskell called H#
6) Silently makes SQL calls when evaluating a pure function
7) Yields an mile long stack trace

Sorry all.  Boredom made me do it,

Michael

Paul Visschers wrote:
> You're zipping 12 lists here, so how about testing each list
> individually? This will narrow down the problem considerably.
> 
> Michael Feathers wrote:
>>
>> I have some code that looks like this and I'm having trouble with it:
>>
>>
>> zip12 ((tails . nub) flightPaths) wayPoints etopsPackets (hd geoCaches)
>>   groundSpeeds headings (map windShift headings) (regulations !! 2)
>>   (foldr (\|/) (tail pathDistances)) [ghy x | x <- [1..], full x]
>>   (nub . nub) arrivalSchedule
>>
>>
>> The domain is air traffic control and I need to generate 12-tuples for
>> aircraft that are within a particular radius of the tower.
>>
>> When I evaluate that expression with 'take 4' it works fine.  When I
>> evaluate it with 'take 6' it works as well.  But, when I evaluate it
>> with 'take 5' I get the following runtime error from H# in Visual Studio
>> (it runs fine on the command line).  This is particularly odd because
>> I'm not using Sql.
>>
>>
>>
>> The type initializer for 'System.Data.SqlClient.SqlConnection' threw an
>> exception.
>> Exception (TypeInitializationException): Source="System.Data";
>> Target=null; Tag=null; TypeName="System.Data.SqlClient.SqlConnection";
>> Message = "The type initializer for
>> 'System.Data.SqlClient.SqlConnection' threw an exception."
>> InnerException (TypeInitializationException): Source="System.Data";
>> Target=null; Tag=null;
>> Message = "The type initializer for
>> 'System.Data.SqlClient.SqlConnectionFactory' threw an exception."
>> StackTrace = " at System.Data.SqlClient.SqlConnection..cctor()"
>> InnerException (TypeInitializationException): Source="System.Data";
>> Target=null; Tag=null;
>> Message = "The type initializer for
>> 'System.Data.SqlClient.SqlPerformanceCounters' threw an exception."
>> StackTrace =
>> " at System.Data.SqlClient.SqlConnectionFactory..ctor()
>> at System.Data.SqlClient.SqlConnectionFactory..cctor()"
>> InnerException (ConfigurationErrorsException):
>> Source="System.Configuration"; Target=null; Tag=null; Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Paey\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> StackTrace =
>> " at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[]
>> keys, SectionInput input, Boolean isTrusted, FactoryRecord
>> factoryRecord, SectionRecord sectionRecord, Object parentResult)
>> at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord
>> factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean
>> getLkg, Boolean getRuntimeObject, Object& result, Object&
>> resultRuntimeObject)
>> at
>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>> configKey, Boolean getLkg, Boolean checkPermission, Boolean
>> getRuntimeObject, Boolean requestIsHere, Object& result, Object&
>> resultRuntimeObject)
>> at
>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>> configKey, Boolean getLkg, Boolean checkPermission, Boolean
>> getRuntimeObject, Boolean requestIsHere, Object& result, Object&
>> resultRuntimeObject)
>> at
>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>> configKey, Boolean getLkg, Boolean ch... (truncated) ...olean
>> checkPermission)
>> at System.Configuration.BaseConfigurationRecord.GetSection(String
>> configKey)
>> at
>> System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String
>> sectionName)
>> at System.Configuration.ConfigurationManager.GetSection(String sectionName)
>> at System.Configuration.PrivilegedConfigurationManager.GetSection(String
>> sectionName)
>> at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection()
>> at System.Diagnostics.DiagnosticsConfiguration.Initialize()
>> at System.Diagnostics.Switch.InitializeConfigSettings()
>> at System.Diagnostics.Switch.InitializeWithStatus()
>> at System.Diagnostics.Switch.get_SwitchSetting()
>> at System.Diagnostics.TraceSwitch.get_Level()
>> at System.Data.ProviderBase.DbConnectionPoolCounters..ctor(String
>> categoryName, String categoryHelp)
>> at System.Data.SqlClient.SqlPerformanceCounters..ctor()
>> at System.Data.SqlClient.SqlPerformanceCounters..cctor()"
>> BareMessage = "The value of the property 'traceOutputOptions' cannot be
>> parsed. The error is: The enumeration value must be one of the
>> following: None, LogicalOperationStack, DateTime, Timestamp, ProcessId,
>> ThreadId, Callstack."
>> Filename = "C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pey\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config line
>> 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>> Line=21;
>> Message =
>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>> error is: The enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>> Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21)"
>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>> #0 =
>> {System.Configuration.ConfigurationErrorsException: The value of the
>> property 'traceOutputOptions' cannot be parsed. The error is: The
>> enumeration value must be one of the following: None,
>> LogicalOperationStack, DateTime, Timestamp, ProcessId,
>> ThreadId, Callstack. (C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>> line 21) ---> UJ.ExceptionManagement.Classes.EmsInnerException: (This is
>> EmsInnerException helper object)
>> --- End of inner exception stack trace ---}
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> Values = System.Configuration.ConfigurationException[]
>> TypeName = "System.Data.SqlClient.SqlPerformanceCounters"
>> TypeName = "System.Data.SqlClient.SqlConnectionFactory"
>> Environment: ThreadIdentity="" DateTime=["2008-06-27 13:02:08.709"]
>> ThreadName=null WindowsIdentity="STRUSS\Pley" ThreadId="10"
>> DomainName="RPMC.vshost.exe" OSVersion=["Microsoft Windows NT 5.1.2600
>> Service Pack 3"] MachineName="1LPPley"
>> UserName="Pley"
>> Remaining Stack Trace - - - - - - - - - - - - - - - - - - - - - - - - -
>> - - - - - - - - - - - - - - - - - - - - - -
>> at System.Data.SqlClient.SqlConnection..ctor()
>> at System.Data.SqlClient.SqlConnection..ctor(String connectionString)
>> at MicroFour.StrataFrame.Data.SqlDataSourceItem.CreateBlankDbConnection()
>> at MicroFour.StrataFrame.Data.DbDataSourceItem.GetDataTable(DbCommand
>> Command, OnChangeEventHandler CallBack)
>> at MicroFour.StrataFrame.Data.SqlDataSourceItem.GetDataTable(DbCommand
>> Command, OnChangeEventHandler CallBack)
>> at MicroFour.StrataFrame.Data.DataLayer.GetDataTable(DbCommand Command,
>> Boolean RegisterNotification)
>> at MicroFour.StrataFrame.Business.BusinessLayer.FillDataTable(DbCommand
>> CommandToExecute)
>> at
>> MicroFour.StrataFrame.Security.BusinessObjects.SFSUsersBO.FillByUserName(String
>> UserName)
>> at MicroFour.StrataFrame.Security.Login.AuthenticateUser(String
>> Username, String Password, String Domain, SFSUsersBO& User)
>> at MicroFour.StrataFrame.Security.Login.AttemptLogin(Object sender,
>> EventArgs e)
>> at RPMC.LoginForm.OnAttemptLogin() in C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\Forms\LoginForm.vb:line 30
>> at RPMC.LoginForm.cmdOk_Click(Object sender, EventArgs e) in
>> C:\Documents and
>> Settings\Pley\Desktop\Projects\RPMC\Forms\LoginForm.vb:line 285
>> at System.Windows.Forms.Control.OnClick(EventArgs e)
>> at System.Windows.Forms.Button.OnClick(EventArgs e)
>> at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
>> at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
>> button, Int32 clicks)
>> at System.Windows.Forms.Control.WndProc(Message& m)
>> at System.Windows.Forms.ButtonBase.WndProc(Message& m)
>> at System.Windows.Forms.Button.WndProc(Message& m)
>> at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)
>> at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)
>> at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg,
>> IntPtr wparam, IntPtr lparam)
>> Comments:
>> EMS warning: maximum number of iterations reached when processing objects.
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 


-- 
Now Playing: Clammbon - 246
http://youtube.com/watch?v=PO77bN8W1mA




More information about the Haskell-Cafe mailing list