問題 2.4
これは対のもう一つの手続き表現である.この表現について任意のオブジェクト x
と y
に対し, (car (cons x y))
が x
を生じることを証明せよ.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
diff --git a/build.gradle b/build.gradle | |
index 29bd433..6a89632 100644 | |
--- a/build.gradle | |
+++ b/build.gradle | |
@@ -26,6 +26,9 @@ kotlin { | |
} | |
macosTest { | |
} | |
+ commonMain.dependencies { | |
+ implementation('org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.2.2') |
diff --git a/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt b/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt | |
index b1b9b6c..c23688f 100644 | |
--- a/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt | |
+++ b/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt | |
@@ -17,9 +17,8 @@ | |
package com.example.android.codelabs.paging.data | |
import android.util.Log | |
-import androidx.lifecycle.MutableLiveData | |
+import androidx.paging.LivePagedListBuilder |
問題 2.4
これは対のもう一つの手続き表現である.この表現について任意のオブジェクト x
と y
に対し, (car (cons x y))
が x
を生じることを証明せよ.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
問題 2.6
対を手続きで表現することがそれほどの驚きでなければ,手続きを操作出来る言語では,0
と, 1
を足す演算を
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
と実装することで,(少なくとも非負の整数だけを問題とする限りは)数を使わないで済せることが出来ることを考えよう.この表現は発明者 Alonzo Church(λ算法を発明した論理学者)に従い, Church 数 (Church numerals)として知られている.
private val semaphore = AtomicBoolean(false) | |
private suspend fun Service.checkAndRefreshAccessToken() { | |
val aSecond = 1000L | |
var mills = 1L | |
// wait (binary-) semaphore to ensure only one coroutine | |
// executing this function's try ... catch body. | |
while (!semaphore.compareAndSet(false, true)) { | |
delay(millis) | |
mills = minOf(aSecond, millis * 2) |