フィールドラベル

runContは関数ではなくてフィールドラベルを選択関数として使ったものだった。

Continuation モナド
newtype Cont r a = Cont { runCont :: ((a -> r) -> r) } -- r は計算全体の最終の型

http://www.sampou.org/haskell/a-a-monads/html/contmonad.html

newtypeの左辺の Cont r a はまだ不明だけど、右辺の意味は、Contというコンストラクタで作られるデータは、中身に((a -> r) -> r)という関数を持っており、その中身である関数にはcunContという名前(フィールドラベル)がついている、ということ。
JavaScriptでいうと、c = new Cont( function(){} ) で作ったcが、{ runCont : function(){} } となっている、みたいなイメージ。

A Gentle Introduction to Haskell: Types, Again
data 宣言における構築子は、フィールド名(波括弧でくくら れて)付で宣言されることもあります。フィールド名は構築子の構成要素を位置 によってではなく、名前で同定します。以下はもうひとつの Point の 定義です。

data Point = Pt {pointx, pointy :: Float}

このデータ型はその前で定義した Point と同一のものです。構築子 Pt は両方でおなじです。しかし、この宣言ではふたつのフィールド名、 pointx と pointy とが定義されています。これらのフィー ルド名は構造の中から構成要素を取り出すための選択関数 ( selector function ) としても使うことができます。
つぎは、これらの選択関数をつかった関数定義です。

absPoint                :: Point -> Float
absPoint p              =  sqrt (pointx p * pointx p + 
                                 pointy p * pointy p)
http://www.sampou.org/haskell/tutorial-j/moretypes.html

なので、選択関数として使う部分は、JavaScriptでいうと、p.pointx みたいなイメージ。
よって、runCont c k はrunContが2引数を受け取る関数というよりは、cからrunContで取り出した関数に引数kを適用していると見るべき。
runCont c k は、JavaScriptでいうと、runCont(c)(k)ではなくて、c.runCont(k)という感じ。