タグ付けされた質問 「scheme」

Schemeは、Lispの方言である関数型プログラミング言語です。標準仕様と多くの実装を備えたシンプルなデザインです。

4
Schemeから何を学ぶべきですか?
優れたプログラマーになるのに役立つ、Schemeから学べるユニークな機能は何でしょうか。 私は主流の言語で多くの経験があり、私の視野を広げ、他の言語にはない機能的な側面について学びたいと思っています。私はjavascriptのクロージャー、C#のラムダ式に精通しており、他の言語にはないことに焦点を当てることができるものに疑問を感じていましたか?Lisp構文を除いて、私はこれまでに他の言語で遭遇し​​たことがあるような気がします。 何か新しいことを教えてくれるScheme / Lispに固有のものは何ですか?

2
誰が最初に「高次関数」および/またはファーストクラスの市民という用語を作り出したのですか
Haskell、O'Caml、またはLISPが登場するずっと以前から、高次関数は学術研究の主題であり、数学ではSchönfinkel(1967年)とHaskell Curry(1968年)はすでにカレーなどの手法を適用していましたが、どのプログラミング言語でも利用できるようになる前でした。 Wikipediaによると、Scheme はファーストクラスの市民として適切な高階関数を導入した最初の言語でしたが、元のアイデアを私たちに帰すことができる人はいますか?たぶん、1930年代にラムダ計算を発明したアロンゾ教会ですか?より具体的には、私がいくつかの本やオンラインリソースでさまざまな言い換えで見た次の定義を誰が作り出したのですか? 関数が別の関数を引数として取る場合、または関数を返す場合、その関数は高次であると見なされます。関数を引数または戻り値の型として使用しない関数は、一次関数と呼ばれます。

9
機能開発のためのOSの選択[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は主に.NET開発者なので、通常はWindows / VisualStudioを使用します(つまり、私は甘やかされています)が、Haskellや他の(ほとんどの場合は機能する)言語を余暇に楽しんでいます。 Haskellの場合、windows-supportは問題ありません(Haskell-Platformを入手できます)が、latley基本的なClojure / Scheme環境をセットアップしようとしたところ、Windowsでの面倒な作業でした。 それで、私はより良いツールと言語サポートのために別のOSを試すことを考えています。もちろん、MacOSやLinuxディストリビューションが残っています。 私は以前にMacOSを使用したことがなく、もちろんLinuxの方が安く(無料)、通常のPCハードウェアでMacOSを並列起動できないと思います(できますか?)。プラス:私がそれらの(私にとって)外部のOSで使用できるツールについての手がかりはありません。 簡単に言うと、Haskell、Clojure、Scala、Schemeをさらに探索したいのですが、もちろん、JavaScript / HTML5 / Cssに少なくとも優れたツールが必要です。.NET / Mono / F#のサポートは素晴らしいですが、これについてはまだWin7ブートを使用します。 だから私は知りたい:-あなたの好きなOS、ディストリビューションは何ですか(Ubuntuは実行可能ですか?)-どのエディター/ IDEを使っていますか? ご協力ありがとうございました! PS:これがこの質問に適切な場所かどうかはわかりませんが、確かにそうだと思います。そうでない場合は、これをどこに移動すればよいか教えてください(StackOverflowは適切な場所ではないようです)

3
.NETモジュールがモジュールファイル名を名前空間から分離するのはなぜですか?
Schemeプログラミング言語(R6RS標準)の実装では、次のようにモジュールをインポートできます。 (import (abc def xyz)) システムは、ファイルを検索しようとするあなたのスキームモジュールを維持するいくつかのディレクトリです。モジュールのソースコードであり、必要に応じてオンザフライでコンパイルされます。$DIR/abc/def/xyz.sls$DIRxyz.sls Ruby、Python、およびPerlモジュールシステムは、この点で似ています。 一方、C#はもう少し複雑です。 まず、プロジェクトごとに参照する必要があるdllファイルがあります。それぞれを明示的に参照する必要があります。これは言うよりも複雑で、ディレクトリにdllファイルをドロップし、C#に名前でピックアップさせます。 次に、dllのファイル名と、dllによって提供される名前空間との間に1対1の名前の対応はありません。この柔軟性は高く評価できますが、手に負えなくなる可能性もあります。 これを具体的にするために、私がこれを言うときusing abc.def.xyz;、C#がC#がabc/def/xyz.dll参照することを知っている(プロジェクトごとに構成可能)ディレクトリでファイルを見つけようとするとよいでしょう。 Ruby、Python、Perl、Schemeのモジュール処理方法の方がエレガントだと思います。新興言語はより単純な設計で行く傾向があるようです。 .NET / C#の世界が、このようにして、間接レベルをさらに上げているのはなぜですか?

3
Haskellおよび/またはラムダ計算におけるパラメーターなしのラムダ式
SchemeやPythonなどの熱心な言語では、パラメータなしのラムダ式を使用して、評価を遅延させることができます。たとえば、Scheme(チキンスキーム)の場合: #;1> (define (make-thunk x) (lambda () (+ x 1))) #;2> (define t (make-thunk 1)) #;3> (t) 2 2行目tは未評価の式にバインド(lambda () (+ 1 1))され2、3行目で評価されます。 同様に、Pythonでは: >>> def make_thunk(x): return lambda: x + 1 ... >>> t = make_thunk(1) >>> t() 2 この手法を使用すると、熱心な言語で遅延評価を実装できます。 そのため、言語が既に遅延しており、遅延式を作成する必要がないため、Haskellにはパラメーターなしのラムダ式がないと予想していました。驚いたことに、Haskellではラムダ式を書くことが可能であることがわかりました \() -> "s" これは次の()ような値にのみ適用できます: (\() -> "s") () …

1
SICP-フィルターが既にリストを返しているときにconsでaccumulateを使用する理由
でSICP第2版のセクション2.2.3、著者は次のコードを持っています: (define (even-fibs n) (accumulate cons nil (filter even? (map fib (enumerate-interval 0 n))))) 私の質問は、なぜ彼らが使用したのされ蓄積し、この場合には?彼らはaccumulate を使用せずにフィルターから同じ答えを得られなかった でしょうか?
8 scheme  sicp 

1
Schemeを学習することでどのようなメリットがありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私はJavaプログラマーであり、理論的なコンピューターサイエンスについて少し学ぶことにしました。私はその学位は持っていませんが、ソフトウェア開発に関してはコーディング以外に何も知らないので、少しの経歴が私を助けてくれます。 私はこのウェブサイトで回答を検索し、「コンピュータプログラムの構造と解釈」という本を推奨する多くの人を見つけましたが、この本を処理するために必要な数学的なノウハウがないため、私は行くことにしました代わりに「プログラムの設計方法」を使用してください。 ここで私の質問は、この経験から何を得ることができるのですか?それは私が望むように私にコンピュータサイエンスについて教えてくれますか?それとも、代わりにアルゴリズムとデータ構造について読む方が良いですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.