问题列表 - 第7227页

请确认或更正我对此Haskell代码段的"英语解释"

我是一名正在通过"真实世界Haskell"工作的C#开发人员,以便真正理解函数式编程,因此当我学习F#时,我真的会理解它,而不仅仅是"在F#中编写C#代码",可以这么说.

好吧,今天我偶然发现了一个例子,我认为我已经理解了3次不同的时间,然后才看到我错过的东西,更新我的解释,然后递归(并诅咒,相信我).

现在我相信我确实理解它,并且我在下面写了详细的"英语解释".你可以请哈斯克尔大师确认理解,或指出我错过了什么?

注意:Haskell代码片段(直接引自本书)定义了一种自定义类型,该类型与内置的Haskell列表类型同构.

Haskell代码片段

data List a = Cons a (List a)
              | Nil
              defining Show
Run Code Online (Sandbox Code Playgroud)

编辑:经过一些回应后,我看到了一个误解,但我不太清楚Haskell"解析"规则会纠正这个错误.所以我在下面列出了我原来的(不正确的)解释,然后进行了修正,接着是我仍然不清楚的问题.

编辑:这是我原来的(不正确的)"片段的"英语解释"

  1. 我正在定义一个名为"List"的类型.
  2. List类型已参数化.它有一个类型参数.
  3. 有两个值构造函数可用于创建List的实例.一个值构造函数称为"Nil",另一个值构造函数称为"Cons".
  4. 如果使用"Nil"值构造函数,则没有字段.
  5. "Cons"值构造函数具有单个类型参数.
  6. 如果使用"Cons"值构造函数,则必须提供2个字段.第一个必填字段是List的实例.第二个必填字段是a的实例.
  7. (我故意省略了关于"定义Show"的任何内容,因为它不是我现在想要关注的部分).

更正的解释如下(BOLD的变化)

  1. 我正在定义一个名为"List"的类型.
  2. List类型已参数化.它有一个类型参数.
  3. 有两个值构造函数可用于创建List的实例.一个值构造函数称为"Nil",另一个值构造函数称为"Cons".
  4. 如果使用"Nil"值构造函数,则没有字段.

    5.(此行已被删除...它不准确)"Cons"值构造函数具有单个类型参数.

  5. 如果使用"Cons"值构造函数,则必须提供2个字段.第一个必填字段是a的实例.第二个必填字段是"List-of-a"的实例.

  6. (我故意省略了关于"定义Show"的任何内容,因为它不是我现在想要关注的部分).

这个问题目前还不清楚

最初的混淆是关于片段的部分"Cons a(List a)".事实上,这是我仍然不清楚的部分.

人们已经指出"Cons"标记之后的行上的每个项目都是一个类型,而不是一个值.所以这意味着这一行说"Cons值构造函数有两个字段:一个是'a'类型,另一个是'list-of-a'."

知道这非常有帮助.但是,有些事情仍然不清楚.当我使用Cons值构造函数创建实例时,这些实例将第一个'a'解释为"将值传递到此处".但他们并没有以同样的方式解释第二个'a'.

例如,考虑一下这个GHCI会议:

*Main> Cons 0 Nil
Cons 0 Nil
*Main> Cons 1 it
Cons 1 (Cons 0 Nil)
*Main> 
Run Code Online (Sandbox Code Playgroud)

当我输入"Cons 0 Nil"时,它使用"Cons"值构造函数来创建List的实例.从0开始,它知道类型参数是"整数".到目前为止,没有混乱.

然而,它确定该的缺点的第一个字段值为0.然而,它决定什么价值的第二个字段的......它只是确定第二场有一个类型 "列表整数"的.

所以我的问题是,为什么"一个"在第一场的意思是"这个字段的类型是'A’ 和 …

c# f# haskell types algebraic-data-types

13
推荐指数
1
解决办法
630
查看次数

PHP转换日期格式

重复

亲爱的大家,

我有一个PHP页面,我将显示来自Mysql db的一些数据.我有2个日期要显示在此页面上.在我的数据库表中,日期1的格式为d/m/Y(例如:11/11/2002),日期2的格式为dmY(例如:11-11-我需要以相同的格式显示这两种格式.我存储在变量$ dateFormat ='m/d/Y'中的格式

任何人都可以指导我

提前致谢

php mysql datetime

0
推荐指数
1
解决办法
4265
查看次数

使用qmake/gcc有条件地禁用警告?

我参与了一个用Qt编写的软件项目,并在Linux上使用qmake和gcc构建.我们必须链接到质量相当低并且发出大量警告的第三方库.我想在我们的源代码上使用-W -Wall,但是将-w传递给讨厌的第三方库以保持控制台没有噪音和混乱,因此我们可以专注于我们的代码质量.

在qmake中,有没有办法有条件地将CFLAGS/CXXFLAGS添加到某些文件和库中?

c++ conditional gcc qmake compiler-warnings

6
推荐指数
1
解决办法
5530
查看次数

PLSQL:在一个查询中获取一周中每一天的总和和一周的总和

比方说,我有一个表ClientClde,就像这样:

ClientName , TradeDate , Quantity
Run Code Online (Sandbox Code Playgroud)

我想在Oracle PLSQL中创建一个查询,它应该返回如下结果:(天数来自TradeDate列,Mon = sum(数量)表示Mon,Tue = sum(Quantity)表示Tue ......等等. )

ClientName  Mon Tue Wed Thu Fri Sat Sun TotalForWeek
ABC         10  15  5   2   4   0   0   34
XYZ         1   1   2   1   2   0   0   7 
Run Code Online (Sandbox Code Playgroud)

假设此报告始终具有使其运行一周的条件,是否可以在单个查询中创建此报告?

sql oracle plsql pivot group-by

4
推荐指数
1
解决办法
1万
查看次数

从Visual Studio C++ 6.0到VS 2008?

我在一家在VC6上进行C++开发的公司工作,我们正考虑转向VS 2008.

升级有什么好处?

有什么缺点?

有关迁移项目文件的任何指南/步骤,或者我应该注意的问题?人们可以转向不同的开发界面吗?

c++ ide build visual-studio

2
推荐指数
1
解决办法
1938
查看次数

关于编程工艺的推荐文章/论文

我的目的是要有一个单一的线程,让你做一个更好的程序员 - 只是为了阅读的文章论文真正站立的博客文章,作者已付出了很多努力来提炼(任何会花费你不到一天阅读的东西).我没有时间挖掘互联网的巨大信息隐藏(大部分时间),所以如果我们通过在好东西上放置信标来互相帮助,我们都可以节省时间.

必须

  • 影响(或至少导致你检查)你对编程的看法/展望.
  • 技术无关(仅与特定的程序员社区无关).
  • 不是新架构,产品或方法的插件.
  • 不依赖于支持编程的特定角色.(如何做更好的规格/ UX /等.)
  • 不能让我的大脑受到伤害.针对中高级观众而不让读者成为数学/微积分的向导

我看到我们已经有了' 什么是最好的编程文章?'并且有一些重叠(至少与第一页相同)_我找不到用于表达我想传达的差异的词语.我想重点在于"工艺"方面.
希望有足够的人发现这个想法有一些用处和贡献..或者它被投票/关闭,并没有增加噪音.

resources

6
推荐指数
1
解决办法
409
查看次数

win32:更改MessageBox文本?

我的程序有多个线程.我正在使用messagebox向用户显示信息.无论如何(或消息框的替代方案)我可以让另一个线程更新/更改消息框显示文本,而消息框仍然在屏幕上并且可由用户看到?

windows winapi messagebox

0
推荐指数
1
解决办法
1549
查看次数

YSlow和css图像 - 如何使用IIS7对它们进行GZip处理?

YSlow表示从我的CSS文件(例如背景图像)引用的图像不是GZip.我在IIS7中为我的网站打开了静态和动态压缩...所以它们应该被压缩.

这是YSlow的错误还是来自CSS文件的图像请求会忽略压缩标头?

有没有办法让这些图像GZipped?

iis-7 yslow

0
推荐指数
1
解决办法
1526
查看次数

自主软件

有没有人写过任何代码,应用程序在其生命周期中学习和改进自己(使用存储在 KB 中的观察数据),是否有任何框架?

c# self

5
推荐指数
1
解决办法
476
查看次数

Apache和mod_rewrite:将域重定向到子目录

(我知道这不是一个编程问题本身,但它涉及正则表达式,所以至少它是边界...)

设置:

在Windows上使用mod_rewrite的Apache 2.0.两个域,我们称之为domain1.example和domain2.example.我想在同一台服务器("server1")上托管这两个域,所以我将它们指向同一个IP地址.

现在,如果用户在他的浏览器中键入"domain2.example",我希望他最终位于服务器上的子目录**中,但保留他输入的域名("domain2.example/domain2 /").当然,重定向必须保留此域/目录下的页面上的所有绝对和相对链接.

这是可能的mod_rewrite(或Apache虚拟主机或其他方法),我该怎么做?

**在这种情况下,"子目录"实际上不是磁盘上的文件夹,而是使用Apache"Location"指令创建的虚拟文件夹.

谢谢.

apache mod-rewrite

5
推荐指数
2
解决办法
1万
查看次数