私はparsecを使用して、次のパーサを書くことをしようとしている: manyLength
:: forall s u m a.
Monad m
=> ParsecT s u m a -> ParsecT s u m Int
manyLength p = go 0
where
go :: Int -> ParsecT s u m Int
私はCPSフォームにこのコードを変換しよう: def sum (lst : List [ Int ]) : Int = lst match {
case Nil => 0
case first :: rest => first + sum (rest)
}
def sumC1(lst : List [ Int ], k : Int => Unit) :
本の第9章エキスパートF#3.0は、バイナリツリーをトラバースするときにスタックオーバーフローを回避するために継続通過スタイルを使用する方法を示しています。私は本のコードとほぼ同じツリートラバーサルコードを書いていますが、それでもスタックオーバーフローが発生します。次のように私のコードは次のとおりです。 type 'a Tree =
| Leaf of 'a
| Branch
{-# LANGUAGE ScopedTypeVariables,BangPatterns #-}
import qualified Data.Attoparsec.Internal as I
import qualified Data.Attoparsec.Internal.Types as T
import qualified Data.Vector.Unboxed as UVec
Schemeでコレクタ機能の使用を理解するのに問題があります。私は本書「The Little Schemer」(Daniel P. FriedmanとMatthias Felleisen)を使っています。いくつかの説明を含む包括的な例は私を大いに助けてくれるだろう。例えば、呼が(identity '(a b c) self)であるとself-functionは(define self (lambd