[Haskell-cafe] Having trouble with zip12..

Don Stewart dons at galois.com
Sun Jul 6 17:07:37 EDT 2008


I win, almost ...

    13:13:18 <dons> dolio: yeah, it was ... almost ... an April 1 style post 

:)

And yes, this was truly shocking on a number of levels. However, we have
people doing a lot of weird things with Haskell these days, so its not
as absurd that someone would be hacking up a zip12 for an air traffic
control system on some MS platform, with SQL in the backend, as it might
have been a few years ago :)

mfeathers:
> 
> 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
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list