小编CMC*_*kai的帖子

使用跟踪函数在Haskell的符号中进行惰性求值

我想知道为什么这个"调试消息1"没有打印在这个片段中:

import Debug.Trace

main = do
    return (trace "debug message 1" ())
    trace "debug message 2" (return ())
Run Code Online (Sandbox Code Playgroud)

打印出第二个"调试消息2",但不打印"调试消息1".似乎两个表达都是一样的.

我尝试将"debug message 1"绑定到变量,然后在另一个地方使用该变量,它实际上触发了评估并打印"debug message 1",但我仍然不明白为什么会发生这种情况.

如果我翻转语句的顺序,它仍然是相同的结果:

import Debug.Trace

main = do
    trace "debug message 2" (return ())
    return (trace "debug message 1" ())
Run Code Online (Sandbox Code Playgroud)

永远不会打印"调试消息1"(使用runhaskell).

haskell lazy-evaluation

3
推荐指数
2
解决办法
609
查看次数

如何在 Keras/Tensorflow 中编写使用循环/迭代并参考 numpy 代码的自定义损失函数

我看到这个问题:Implementing custom loss function in keras with condition我需要做同样的事情,但代码似乎需要循环。

我有一个自定义numpy函数,可以计算与平均向量的平均欧几里得距离。我根据论文https://arxiv.org/pdf/1801.05365.pdf写了这篇文章:

方程图

import numpy as np

def mean_euclid_distance_from_mean_vector(n_vectors):

    dists = []

    for (i, v) in enumerate(n_vectors):
        n_vectors_rest = n_vectors[np.arange(len(n_vectors)) != i]

        print("rest of vectors: ")
        print(n_vectors_rest)

        # calculate mean vector
        mean_rest = n_vectors_rest.mean(axis=0)

        print("mean rest vector")
        print(mean_rest)

        dist = v - mean_rest

        print("dist vector")
        print(dist)
        dists.append(dist)

    # dists is now a matrix of distance vectors (distance from the mean vector)
    dists = np.array(dists)

    print("distance vector matrix")
    print(dists) …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow pytorch

3
推荐指数
1
解决办法
521
查看次数

如何扩展 vue3 路由器中“router-link”的 onClick 处理程序行为

<router-link />想用它来导航到 Vue 3 应用程序中的另一个页面,但我还想在单击此链接时运行另一个函数。

现在我必须使用一个额外的<span />元素来包装<router-link />并添加@click属性以依赖事件冒泡。添加@click处理程序<router-link />会导致路由器链接不起作用,浏览器认为它只是一个普通的锚点 href。

    <span @click="handleClose(imageId)">
      <router-link
        :to="{name: 'image', params: {'imageId': imageId}}"
        class="permalink">
        Permalink
      </router-link>
    </span>
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

vue.js vue-router

3
推荐指数
1
解决办法
6163
查看次数

如何从 Dask 调度程序获取仪表板地址

启动 dask 分布式本地集群时,您可以为 .dask 设置随机端口或地址dashboard_address

如果你后来得到了这个scheduler对象。有没有办法提取仪表板的地址。

我有这个:

cluster = dask.distributed.LocalCluster(scheduler_port=0,
                                        dashboard_address='localhost:0')
scheduler = dask.distributed.Client(cluster, set_as_default=False)
scheduler_info = scheduler.scheduler_info()
logger.info('Scheduler: %s', scheduler_info['address'])
logger.info('Status Port: %s', scheduler_info['services']['dashboard'])
Run Code Online (Sandbox Code Playgroud)

但这只能获取仪表板的端口,而不是仪表板的 IP。如果我将仪表板地址放在调度程序之外的单独 IP 上,似乎很难知道它绑定到哪个 IP。

dask dask-distributed

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

Haskell在类型签名中使用类型类

假设一个简单的类型类约束签名:

f :: (Eq a, Num b) => a -> b
f str = 4
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这些不起作用

f :: (Eq a) -> (Num b)
f str = 4

f :: Eq -> Num
f str = 4
Run Code Online (Sandbox Code Playgroud)

我知道类型类有类型* -> Constraint,而类型签名只接受各种类型*.

但我的问题是为什么会有这种限制?为什么不能像类型一样使用类型类?允许使用像类型这样的类型类的能力有哪些优点和缺点?

haskell types typeclass type-signature

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

Haskell:构造一个类约束的抽象数据类型,如数字

当我创建一个数字时:

x = 1
y = 2
z = 3
Run Code Online (Sandbox Code Playgroud)

这些变量的类型如下:

ghci> :t x
ghci> Num a => a
Run Code Online (Sandbox Code Playgroud)

这让我认为1是一个"数据构造函数",它不构造一个类型,也不构造一个类型构造函数,而是构造一个受Num类约束的类型.这允许我Num a通过运行x :: Int或进一步向编译器澄清我想要的那个x :: Integer.

我试着在文档中找到这是怎么做的,但没有运气.

所以问题是,如何才能创建类似的数据类型?换句话说,我如何创建一组类似于1,2,3,4,5...创建类型值的数据构造函数MyOwnClass a => a,其中MyOwnClass是我自己创建的任意类?

例如:

x = A
y = ?
z = ?

ghci> :t x
ghci> Alphabet a => a
Run Code Online (Sandbox Code Playgroud)

haskell types typeclass

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

Haskell:函数应用程序是否通过列表串联进行分配?

读完这个问题后:功能证明(Haskell)

在查看forall xs ys. length (xs ++ ys) = length xs + length ys了Haskell音乐学院的归纳证明之后(第164页).

在我看来,函数应用程序分布在列表串联上.

因此,更普遍的法律可能就是这样forall f xs ys. f (xs ++ ys) = f xs ++ f ys.

但是,如何证明/反驳这样的谓词呢?

- 编辑 -

我写了一个错字:forall f xs ys. f (xs ++ ys) = f xs + f ys它与上一个问题和Haskell SoM使用的内容相匹配.话虽如此,由于这个错字,它不再是"分配"财产.然而,@ leftaroundabout为我原来的错字问题做出了正确答案.至于我的预期问题,法律仍然不正确,因为功能不需要保留结构价值.将f可能给依赖于它应用到列表的长度完全不同的答案.

haskell functional-programming proof

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

Haskell:多属性排序不够通用

我试图实现一个排序的多属性排序,适用于任何事物的列表.

import Data.Ord (Ordering, Down (..), comparing)
import Data.List (sortBy)
import Data.Monoid (mconcat)

data Order a = ASC a | DESC a

orderBy :: Ord b => [Order (a -> b)] -> [a] -> [a]
orderBy rankedProperties unsorted = 
    sortBy rankedCompare unsorted 
    where 
        rankedCompare x y = 
            mconcat $ map 
                (\property -> 
                    case property of 
                        ASC  f -> comparing f x y
                        DESC f -> comparing (Down . f) x y
                ) rankedProperties
Run Code Online (Sandbox Code Playgroud)

它现在适用于元组和记录,但是我发现了一个问题.问题是bin orderBy必须是相同的.这是考虑到这个:

data Row …
Run Code Online (Sandbox Code Playgroud)

sorting generics haskell

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