标签: infinite

Haskell中的列表是归纳还是诱导?

所以我最近一直在阅读有关coinduction的内容,现在我想知道:Haskell列出了归纳还是共同?我也听说Haskell没有区分这两者,但如果是这样的话,他们怎么这样做呢?

列表是归纳定义的data [a] = [] | a : [a],但可以共同使用,ones = a:ones.我们可以创建无限列表.然而,我们可以创建有限列表.他们是哪一个?

相关的是Idris,其中类型List a严格地是归纳类型,因此仅是有限列表.它的定义类似于Haskell中的方式.然而,Stream a是一种共同类型,建模无限列表.它被定义为(或者更确切地说,定义相当于)codata Stream a = a :: (Stream a).创建无限List或有限Stream是不可能的.但是,当我写出定义时

codata HList : Type -> Type where
    Nil : HList a
    Cons : a -> HList a -> HList a
Run Code Online (Sandbox Code Playgroud)

我得到了我对Haskell列表的期望,即我可以创建有限和无限结构.

所以让我把它们归结为几个核心问题:

  1. Haskell不区分归纳和共感类型吗?如果是这样,那是什么形式化?如果没有,那么哪个是[a]?

  2. HList是coinductive吗?如果是这样,coinductive类型如何包含有限值?

  3. 如果我们定义data HList' a = L (List a) | R (Stream a)怎么办?会考虑什么和/或仅对它有用HList

haskell infinite induction idris coinduction

30
推荐指数
3
解决办法
1505
查看次数

Android:如何停止在ImageView上应用无限动画?

我有一个ImageView,我已经应用了旋转动画.由于我希望循环继续,我在rotate.xml中将repeatCount作为无限:

android:repeatCount="infinite"
Run Code Online (Sandbox Code Playgroud)

在onCreate()中,我加载动画并启动它.

Animation myAnim    = AnimationUtils.loadAnimation(this, R.anim.rotate);
objectImg.startAnimation(myAnim); 
Run Code Online (Sandbox Code Playgroud)

按下按钮时,必须停止旋转.因此在我的onClick()中,我调用了clearAnimation().

objectImg.startAnimation(myAnim); 
Run Code Online (Sandbox Code Playgroud)

我的简单问题是停止动画是否正确.我假设clearAnimation()对应于loadAnimation(),但是没有与startAnimation()对应的stopAnimation().

animation android infinite imageview

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

jQuery无限滚动/延迟加载

我正在重新设计我的网站,并一直在寻找使用JavaScript和jQuery.这是我到目前为止:http://www.tedwinder.co.uk/gallery2/.

我的愿景是将所有照片放在一个页面上,用户可以像现在一样滚动浏览.但是,我理解在一个页面上有50多个大图像的限制和影响,并考虑使用无限滚动和延迟加载,我理解只会在用户到达时加载图像,或者当他们点击时"更多"链接?

所以,我的问题是:这会降低页面加载,我究竟会去有效地实施无限滚动/延迟加载和将这项工作,或者你能想到的这样做的任何更有效的方法?

谢谢,特德

javascript jquery scroll lazy-loading infinite

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

haskell中循环列表和无限列表之间有什么区别?

引用@dfeuer对这个问题的回答:在Haskell中构造循环列表的最便宜的方法,它说使用循环列表"击败"垃圾收集器,因为它必须保留你从循环列表中分配的所有内容,直到你删除引用列表中的任何缺点单元格.

显然在Haskell中,循环列表和无限列表是两个独立的事物.这篇博客(https://unspecified.wordpress.com/2010/03/30/a-doubly-linked-list-in-haskell/)说如果你实现cycle如下:

cycle xs = xs ++ cycle xs
Run Code Online (Sandbox Code Playgroud)

它是一个无限列表,而不是循环列表.要使它循环,你必须像这样实现它(如Prelude源代码中所示):

cycle xs = xs' where xs' = xs ++ xs'
Run Code Online (Sandbox Code Playgroud)

这两种实现之间究竟有什么区别?为什么如果你在循环列表中的某个地方持有一个cons小区,垃圾收集器必须在分配之前保留所有内容?

haskell infinite circular-list

20
推荐指数
2
解决办法
2206
查看次数

在Haskell中检测循环列表的能力是否会破坏该语言的任何属性?

在Haskell中,一些列表是循环的:

ones = 1 : ones
Run Code Online (Sandbox Code Playgroud)

其他人则不是:

nums = [1..]
Run Code Online (Sandbox Code Playgroud)

然后有这样的事情:

more_ones = f 1 where f x = x : f x
Run Code Online (Sandbox Code Playgroud)

这表示与该值相同的值ones,当然该值是重复序列.但它是否在内存中表示为循环数据结构是值得怀疑的.(一个实现可以这样做,但这个答案解释说"这不太可能在实践中发生".)

假设我们采用Haskell实现并在其中入侵一个内置函数isCycle :: [a] -> Bool,该函数检查参数的内存中表示的结构.True如果列表是物理循环的并且False参数的长度是有限的,则返回.否则,它将无法终止.(我想"在黑客入侵"因为在Haskell中编写该函数是不可能的.)

这个函数的存在是否会打破语言的任何有趣属性?

haskell cycle infinite

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

证明流的平等

我有一个数据类型

data N a = N a [N a]
Run Code Online (Sandbox Code Playgroud)

玫瑰树和应用实例

instance Applicative N where
 pure a = N a (repeat (pure a))
 (N f xs) <*> (N a ys) = N (f a) (zipWith (<*>) xs ys)
Run Code Online (Sandbox Code Playgroud)

并需要证明适用法律.然而,纯粹创造无限深,无限分枝的树木.因此,例如,在证明同态定律

pure f <*> pure a = pure (f a)
Run Code Online (Sandbox Code Playgroud)

我认为这证明了平等

zipWith (<*>) (repeat (pure f)) (repeat (pure a)) = repeat (pure (f a))
Run Code Online (Sandbox Code Playgroud)

通过近似(或采取)引理将起作用.然而,我的尝试导致归纳步骤中的"恶性循环".特别是减少

approx (n + 1) (zipWith (<*>) (repeat (pure f)) (repeat (pure a))
Run Code Online (Sandbox Code Playgroud)

(pure f <*> …
Run Code Online (Sandbox Code Playgroud)

haskell list infinite applicative

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

在页面加载时调用离子无限滚动函数

我正在使用离子框架来创建一个基本的Feed应用程序.我得到了复习,但我的离子无限滚动有问题.

Feed.html

<ion-content ng-controller="FeedController" > 
    <ion-refresher pulling-text="Pull to refresh.." on-refresh="get_feeds()" refreshing-text="Fetching ..." refreshing-icon="ion-loading-b">
    </ion-refresher>
    <ion-list>
        <ion-item ng-repeat="question in questions">
            <div class="item item-divider">
{{question.question}}
            </div>
            <div class="item" ng-bind-html="question.answer | trustHtml">
            </div>
        </ion-item>
    </ion-list>
    <ion-infinite-scroll
        on-infinite="get_more()"
        distance="1%">
    </ion-infinite-scroll>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

Feed.js

 (function(){
    "use strict";
    angular.module( 'app.controllers' ).controller( 'FeedController', 
        [ 'eTobb', 'Users', '$scope', '$timeout', function( eTobb, Users, $scope, $timeout) {

            var pageIndex = 1;

            $scope.questions = [];

            $scope.get_feeds = function(pageIndex){
                eTobb.get($scope.apiCall, { user_id: Users.id, page: 0 }, function(response) {
                    if ( response ){
                        $scope.questions …
Run Code Online (Sandbox Code Playgroud)

scroll infinite angularjs ionic-framework ionic

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

什么时候stackoverflow公平合理?

代码已更新

为了修复过滤的错误Interminable,以下代码更新并合并为原始:

public static bool IsInfinity(this IEnumerable x) {
    var it=
        x as Infinity??((Func<object>)(() => {
            var info=x.GetType().GetField("source", bindingAttr);
            return null!=info?info.GetValue(x):x;
        }))();

    return it is Infinity;
}
Run Code Online (Sandbox Code Playgroud)

bindingAttr 被宣布为常数.


  • 摘要

    我正在尝试实现一个无限的可枚举,但遇到的东西似乎是不合逻辑的,暂时没有想法.我需要一些方向来完成代码,成为一个语义,逻辑和合理的设计.

  • 整个故事

    几个小时前我问过这个问题:

    无数可数仍然是"可枚举的"?

    这可能不是一个好的实施模式.我正在尝试做的是,以逻辑和语义的方式实现一个可枚举的无穷大(我想......).我会把代码放在这篇文章的最后.

    大问题是,它只是无限枚举呈现,但实际上它枚举没有任何意义,因为是它没有真正的元素.

    因此,除了为枚举提供虚拟元素外,还有四个我能想象的选项,其中三个导致了StackOverflowException.

    1. 抛出InvalidOperationException一次它将被枚举.

      public IEnumerator<T> GetEnumerator() {
          for(var message="Attempted to enumerate an infinite enumerable"; ; )
              throw new InvalidOperationException(message);
      }
      
      Run Code Online (Sandbox Code Playgroud)
    2. 和3是技术上等同,让当它出现堆栈溢出的真正溢出.

      public IEnumerator<T> GetEnumerator() {
          foreach(var x in this)
              yield return …
      Run Code Online (Sandbox Code Playgroud)

c# ienumerable infinite

16
推荐指数
2
解决办法
725
查看次数

Java:使用Scanner in.hasNextInt()的无限循环

我使用以下代码:

while (invalidInput)
{
    // ask the user to specify a number to update the times by
    System.out.print("Specify an integer between 0 and 5: ");

    if (in.hasNextInt())
    {
        // get the update value
        updateValue = in.nextInt();

        // check to see if it was within range
        if (updateValue >= 0 && updateValue <= 5) 
        { 
            invalidInput = false; 
        } 
        else 
        {
            System.out.println("You have not entered a number between 0 and 5. Try again.");
        }
    } else
    {
        System.out.println("You have entered an …
Run Code Online (Sandbox Code Playgroud)

java loops infinite java.util.scanner

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

诗歌陷入无限安装/更新

我的问题是,当我执行时poetry installpoetry update或者poetry lock进程会无限期地运行。

我尝试使用该-vvv标志来获取正在发生的事情的输出,看起来它在第一次安装中永远卡住了。

我的连接良好,并且我尝试安装的所有软件包都存在。

我使用版本 1.2.1,但无法升级到较新的版本,因为文件的格式.lock不同并且我们的管道失败。

python infinite python-poetry

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