小编Guy*_*der的帖子

类型同义词对类型类实例的影响是什么?GHC中的TypeSynonymInstances pragma有什么作用?

我正在读真实世界Haskell Pg 151,我已经盯着下面的一段时间了一个多小时:

回想一下,String是[Char]的同义词,而Char又是类型[a],其中Char代替了类型参数a.根据Haskell 98的规则,在编写实例时,我们不允许提供类型代替类型参数.换句话说,为[a]编写实例对我们来说是合法的,但对于[Char]则不是.16条评论5335

它只是没有下沉.盯着RWH第6章的(免费盗版)副本,我看到很多其他人真的很痛苦.我仍然不明白这些评论......

首先,关于这一切的一切让我感到困惑,所以如果你觉得你可以解释这段经文的任何事情,TypeSynonymInstances请你做.

这是我的问题:

  • Int是一个数据构造函数
  • String数据构造函数 AND 类型同义词

现在我无法回答这些问题:

  1. 为什么类型同义词会排除使类型成为类型类的成员(我正在寻找可能与类型同义词的编译或实现相关的某些原因)?
  2. 为什么语言的设计者,不想要这种语法(我要求推理不是广泛的理论或unicode数学符号).
  3. 我看这条线"其中字符替换了类型参数的类型[A]",我想知道为什么我不能用它替换此"的类型,其中INT是代替类型参数".

谢谢!

haskell typeclass

17
推荐指数
2
解决办法
4026
查看次数

在F#中生成斐波那契数列

我刚刚开始使用VS2010学习F#,下面是我第一次尝试生成Fibonacci系列.我要做的是建立一个小于400的所有数字的列表.

let fabList = 
    let l =  [1;2;]
    let mutable a = 1
    let mutable b = 2
    while l.Tail < 400 do
        let c = a + b
        l.Add(c)
        let a = b
        let b = c
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是,在最后一个语句中,我在最后一行收到错误消息"表达式中此点或之前的不完整结构化构造".我不明白我在这里做错了什么.

虽然这似乎是以相当有效的方式(从c ++/C#程序员)构建列表的明显方式,但从我对f#的了解很少,这似乎不是正确的方法来执行程序.这种感觉我是否正确?

f# tail-recursion fibonacci

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

由于单位F#接口继承失败

有谁知道为什么这不能编译?

type MyInterface<'input, 'output> = 
    abstract member MyFun: 'input -> 'output

type MyClass() = 
    interface MyInterface<string, unit> with
        member this.MyFun(input: string) = ()
    //fails with error FS0017: The member 'MyFun : string -> unit' does not have the correct type to override the corresponding abstract method.
type MyUnit = MyUnit
type MyClass2() = 
    //success
    interface MyInterface<string, MyUnit> with
        member this.MyFun(input: string) = MyUnit
Run Code Online (Sandbox Code Playgroud)

f# unit-type

17
推荐指数
1
解决办法
529
查看次数

在F#中键入扩展名和成员可见性

F#具有称为"类型扩展"的功能,使开发人员能够扩展现有类型.有两种类型的扩展:内在扩展可选扩展.第一个类似于C#中的部分类型,第二个类似于方法扩展(但更强大).

要使用内部扩展,我们应该将两个声明放入同一个文件中.在这种情况下,编译器会将两个定义合并为一个最终类型(即这是一种类型的两个"部分").

问题是这两种类型对不同的成员和值有不同的访问规则:

// SampleType.fs
// "Main" declaration
type SampleType(a: int) =
    let f1 = 42
    let func() = 42

    [<DefaultValue>]
    val mutable f2: int
    member private x.f3 = 42
    static member private f4 = 42

    member private this.someMethod() =
        // "Main" declaration has access to all values (a, f1 and func())
        // as well as to all members (f2, f3, f4)
        printf "a: %d, f1: %d, f2: %d, f3: %d, f4: %d, func(): …
Run Code Online (Sandbox Code Playgroud)

f# lexical-scope type-extension

17
推荐指数
1
解决办法
340
查看次数

tf.zeros()的动态大小(用于无维度的占位符)

请考虑以下代码:

x = tf.placeholder("float", shape=[42, 4])
y = tf.zeros([42, 4], "float")
xy_stacked = tf.concat(1, [x, y])

print(x.get_shape())
print(y.get_shape())
print(xy_stacked.get_shape())
Run Code Online (Sandbox Code Playgroud)

这将产生以下输出,如预期的那样:

TensorShape([Dimension(42), Dimension(4)])
TensorShape([Dimension(42), Dimension(4)])
TensorShape([Dimension(42), Dimension(8)])
Run Code Online (Sandbox Code Playgroud)

但是,如果占位符具有动态维度,该维度在运行时由传递给的值确定feed_dict=,如占位符通常那样:

x = tf.placeholder("float", shape=[None, 4])
y = tf.zeros([None, 4], "float")
xy_stacked = tf.concat(1, [x, y])
Run Code Online (Sandbox Code Playgroud)

这会产生错误tf.zeros([None, 4], "float").显然Dimension(None)不允许tf.zeros:

TypeError                                 Traceback (most recent call last)
<ipython-input-24-277eca38a392> in <module>()
      2 
      3 x = tf.placeholder("float", shape=[None, 4])
----> 4 y = tf.zeros([None, 4], "float")
      5 xy_stacked = tf.concat(1, …
Run Code Online (Sandbox Code Playgroud)

tensorflow

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

如何查看Bazel版本?

我试图找出我的计算机上目前有哪个Bazel版本从源代码安装TensorFlow(它需要0.1.4版本)

evan@evan-box:~/Apps/tensorflow$ bazel --version
Unknown Bazel startup option: '--version'.
  For more info, run 'blaze help startup_options'.
evan@evan-box:~/Apps/tensorflow$ bazel version
Build label: head (@125b349)
Build target: bazel-out/local_linux-fastbuild/bin/src/main/java/bazel-main_deploy.jar
Build time: Fri Nov 13 01:23:30 2015 (1447377810)
Build timestamp: 1447377810
Build timestamp as int: 1447377810
Run Code Online (Sandbox Code Playgroud)

那么版本究竟在哪里?

bazel tensorflow

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

请用最简单,最无术语的英语解释"折叠的普遍属性"?

我正在通过"真实世界Haskell"工作,这导致了一个免费的PDF,名为"关于折叠的普遍性和表现力的教程".它指出"折叠"是"普遍的".我正在与他对"普遍"的定义进行斗争,并希望听到那些已经投入时间消化的人:请用最简单,最无术语的英语解释"折叠的普遍属性"?什么是"普遍财产",为什么重要?

谢谢.

haskell functional-programming fold

16
推荐指数
3
解决办法
1597
查看次数

将项目列表拆分为两个奇数和偶数索引项目列表

我想提出一个接受列表并返回两个列表的功能:第一个是包含每个奇数项和第二个包含每个偶数项.

例如,给定[1;2;4;6;7;9],我想回来[ [1;4;7] ; [2;6;9] ].

到目前为止我写过这篇文章,我不知道如何进步.

let splitList list =
    let rec splitOdd oList list1 list2 =
        match oList with
        | [] -> []
        | head :: tail -> splitEven tail (list1::head) list2
    and splitEven oList list1 list2 =
        match oList with
        | [] -> []
        | head :: tail -> splitOdd tail list1 (list2::head)
    splitOdd list [] []
Run Code Online (Sandbox Code Playgroud)

f# ocaml functional-programming tail-recursion list

16
推荐指数
3
解决办法
5410
查看次数

#(井号)在类型签名中意味着什么?

类型签名中的#含义seq<#seq<'a>>与刚刚相比是什么意思seq<seq<'a>>

f# symbols casting type-signature

16
推荐指数
1
解决办法
515
查看次数

如何获取Bazel执行的命令

我想知道是否有办法让Bazel列出,输出,显示等所有可以从命令行执行的命令,这些命令在清理后的构建期间运行.我不在乎输出是否在屏幕上,文件中等等.如有必要,我会将其按到可用的形式.

我在Bazel运行期间捕获了屏幕输出,这让我知道正在做什么,但它没有给我一个命令,我可以在命令行上执行.该命令必须包含所有命令选项而不是显示变量.

如果这是不可能的,因为Bazel是开源的,代码中的代码是表示要运行的命令的行,以便我可以修改Bazel以输出可执行命令.

我知道Bazel中的查询命令,并使用它生成依赖关系图.如果这可以作为查询命令完成,那就更好了.

TLDR;

我的目标是在Windows上使用Bazel构建TensorFlow.是的我知道所有问题和原因没有这样做,并且已经通过虚拟机或Docker在Windows上成功安装了TensorFlow.我没有采取射击在Windows上建立巴泽勒开始使用Cygwin,但开始失控,因为我用它来使用包安装和Cygwin不玩包不错,所以后来我就开始尝试手工打造巴泽尔那变成了一个泥潭.所以我现在试图在Windows上手动构建TensorFlow,复制Bazel在Linux上构建TensorFlow的方法.

command bazel

16
推荐指数
1
解决办法
5040
查看次数