谓词是真的吗?

时间:2017-05-30 17:20:31

标签: scheme racket predicate

我一直试图在“简单计划”中理解这个练习8.10,但是却无法在Racket博士中理解它。

就是这样:写一个谓词是真的吗?它有两个参数,一个谓词程序和一个句子。如果谓词参数对句子中的每个单词都返回true,则它应返回#t。

  

(真实的?甚至?'(2 4 6 8))

     

Ť

     

(真实的?甚至?'(2 6 3 4))

     

˚F

我尝试了解决方案:

(定义(真实的所有?pred发送)   (=(计数已发送)(计数(保持预先发送))))

但是,Dr Racket给出了像计数:arity不匹配这样的错误。 是否有人能够重写它或者至少提供一些提示。赞赏很多:)

最诚挚的问候, 尤妮斯

2 个答案:

答案 0 :(得分:0)

Racket支持多种语言。因此,所有程序都以#lang行开头,告诉Racket使用哪种语言。 Simply Scheme中使用的Scheme方言需要这一行:

#lang planet dyoo/simply-scheme:2

以下计划:

#lang planet dyoo/simply-scheme:2

(define (true-for-all? pred sent)
  (= (count sent) (count (keep pred sent))))

(true-for-all? even? '(2 4 6 8))

(true-for-all? even? '(2 6 3 4))

返回

#t
#f

正如所料。

注意:在DrRacket的左下角,选择"从源中确定语言"。

Simply Scheme语言的文档在这里:http://planet.racket-lang.org/package-source/dyoo/simply-scheme.plt/2/2/planet-docs/manual/index.html

答案 1 :(得分:0)

纯粹的Racket有一个解决方案(仅适用于上下文):

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    //Check for Google Play Music exist
    if (isPackageInstalled("com.google.android.music", getPackageManager())) 
    {
        Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.google.android.music");
        startActivity(LaunchIntent);
    } 
    else
    {
    else
    {
        //Your previous code goes here
        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        File file = new File(Environment.getExternalStorageDirectory().getPath()+"/alarm.mp3");
        if (file!=null)
        {
            intent.setDataAndType(Uri.fromFile(file), "audio/*");
            startActivity(intent);
        }
        else
        {
            Toast.makeText(Music.this,"Sound Track missing",Toast.LENGTH_LONG);
        }
    }

}

private boolean isPackageInstalled(String packagename, PackageManager packageManager) 
{
    try 
    {
        packageManager.getPackageInfo(packagename, 0);
        return true;
    } 
    catch (PackageManager.NameNotFoundException e) 
    {
        return false;
    }
}