小编Qan*_*asi的帖子

Y Combinator实施方案

我对计划函数式编程真的很陌生。我最近在 lambda 演算中遇到了 Y-combinator 函数,就像这样Y ? (?y.(?x.y(xx))(?x.y(xx)))。我想在方案中实现它,我搜索了很多,但我没有找到任何与上面给出的结构完全匹配的实现。我发现的其中一些如下:

(define Y
(lambda (X)
  ((lambda (procedure)
     (X (lambda (arg) ((procedure procedure) arg))))
   (lambda (procedure)
     (X (lambda (arg) ((procedure procedure) arg)))))))
Run Code Online (Sandbox Code Playgroud)

(define Y
  (lambda (r)
    ((lambda (f) (f f))
     (lambda (y)
       (r (lambda (x) ((y y) x)))))))
Run Code Online (Sandbox Code Playgroud)

如您所见,它们与此Y ? (?y.(?x.y(xx))(?x.y(xx)))组合器函数的结构不匹配。如何以完全相同的方式在方案中实现它?

scheme lambda-calculus y-combinator

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

将Firebase库更新到16.0.0会引发Google Play服务依赖项问题

我的项目一直工作到一天,因为没有理由(我什么都没做),gradle开始给出这个奇怪的错误:

Program type already present: com.google.android.gms.internal.measurement.zzabo
Run Code Online (Sandbox Code Playgroud)

在发生此错误时,我的项目级别gradle如下所示:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com'
            // Alternative URL is 'https://dl.google.com/dl/android/maven2/'
        }
        maven { url 'https://plugins.gradle.org/m2/'}
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.google.gms:google-services:4.0.0'
        classpath 'io.fabric.tools:gradle:1.25.3'
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.8.1'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://dl.bintray.com/sayyam/maven'
        }
        maven {
            url "https://jitpack.io"
        }
        maven {
            url 'https://maven.google.com'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序级别的优点:

apply plugin: 'com.android.application'
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin' …
Run Code Online (Sandbox Code Playgroud)

android gradle firebase google-play-services

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

pthread_join和pthread_mutex_lock有什么区别?

以下代码是从此站点获取的,并且显示了如何使用互斥锁。它同时实现了pthread_join和pthread_mutex_lock:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *functionC();
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
int  counter = 0;

main()
{
   int rc1, rc2;
   pthread_t thread1, thread2;

   /* Create independent threads each of which will execute functionC */

   if( (rc1=pthread_create( &thread1, NULL, &functionC, NULL)) )
   {
      printf("Thread creation failed: %d\n", rc1);
   }

   if( (rc2=pthread_create( &thread2, NULL, &functionC, NULL)) )
   {
      printf("Thread creation failed: %d\n", rc2);
   }

   /* Wait till threads are complete before main continues. Unless we  */
   /* wait …
Run Code Online (Sandbox Code Playgroud)

mutex pthreads pthread-join ubuntu-12.04

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