小学2年時よりモデル活動開始。あいらしいルックスで人気となり、作品を量産。看板アイドルの一人となる。2006年11月の作品を最後に、突然活動をやめていた。2008年1月、同事務所より約1年ぶりに活動再開するという発表がなされ、その年に新作の写真集とDVDが数本出たが、その後はあまり活動していない。
Prologの述語はPrologの基本データタイプである項で表現でき、述語自身の引数として別の述語を与える高階述語を作成できる。たとえば、引数で述語を与えそれを単純に実行させたい場合、ゴールとして変数をそのまま書けばいい。eval(P) :- P.またはeval(P) :- call(P).本来はcall/2が使われたが、その後、目標Pとだけ書くことでcall(P)と解釈されるようになった。述語名evalはLISPで同様の機能の関数の関数名としてこれが使われた伝統を引いてこの述語名が使わることがある。このように、任意の述語を実行時に作成して実行することができるため、リストのすべての要素に特定の述語を適用し結果のリストを返す  maplist/2  や、リストの要素を与えられた述語の結果で選択する  sublist/3  などの高階述語を容易に作成できる。同様の高階述語には  findall/3  、 setof/3  、 bagof/3  などがある。また、純粋なPrologのメタインタプリタは以下のように書ける。 clause(P, Q)  は頭部が P にユニフィケーション可能な節の本体部 Q を取得する述語である。execute(true) :- !. % trueならば成功execute((P,Q)) :- !, execute(P), execute(Q). % P1,... ,Pnの各要素を左から順に試みるexecute(P) :- clause(P, Q), execute(Q). % ゴールPの定義を取得し、本体Qを試みる純粋なPrologのメタインタプリタには組込述語がないとされるため、上記の通りであるが、実際のProlog処理系には組込述語が存在するため、上記定義では、第三節のclause(P, Q),の部分でPが組込述語の頭部になった時、この副目標が偽となっとしまうことがある。このclause(P, Q),を実行する前に、ユーザ定義述語か、組込述語かを検査し、別の節に分離する必要がある。組込述語についてはclause(P, Q),することなしに、単にP,すればよい。データとプログラムの形式が同じであることや、任意の演算子がユーザ定義可能なこと、Prolog自身が強力な構文解析機能を持つことなどもあり、このようなメタインタプリタをもとにPrologの一部機能を拡張した別言語のインタプリタを作成することは、比較的容易である。関数型言語で高階関数を代表するmap()はPrologでも高階述語を使って定義可能である。しかし、関数型では出力は返り値だけであったが、Prologでは引数のどれかである。入力も複数あり得る。しかもどの引数が入力であるか、あるいは出力であるかを示すモード宣言は、ほとんどの処理系で採用されていない。したがって、Prologでmap述語を構成するためには、対象となるリストの項はどの引数に当たるのかを陽に示さなくてはならない。以下に、map述語を二つ示す。map/4とmap/5である。map(_副目標,_要素,_対象リスト,_収集された副目標リスト) :-        findall(_収集解,(                    member(_要素,_対象リスト),                    _副目標),_収集された副目標リスト).map(_副目標,_要素,_対象リスト,_収集項,_収集項のリスト) :-        findall(_収集項,(                    member(_要素,_対象リスト),                    _副目標),_収集項のリスト).どちらも、対象リストの要素が反映して副目標の実行が変化して、それをリストに収集している。map/4は収集されるのが実行された_副目標 自体であるのに対して、map/5では実行された _副目標 自体ではなく、実行した時々に構成された _収集項 がリストに積み上がる。以下にこのmap述語使用例を示す。?- map(sub_atom(_文字列,S,Len,_,S),       [_文字列,S,Len], [[abcde,0,2],[efgh,2,1],[qazxyz,1,2]], L).L = [sub_atom(abcde,0,2,3,ab),sub_atom(efgh,2,1,1,g),sub_atom(qazxyz,1,2,3,az)]?- map(sub_atom(_文字列,S,Len,_,S),       [_文字列,S,Len], [[abcde,0,2],[efgh,2,1],[qazxyz,1,2]],S, L).L = [ab,g,az]となる。上記事例で map は、_副目標の引数 _文字列,S,Len,Y が map述語の中で巧みに結びつけられているが、やはり難解である。これではfindall/3を直接使って、?- findall(Y,(         member([_文字列,S,Len],[[abcde,0,2],[efgh,2,1],[qazxyz,1,2]]),         sub_atom(_文字列,S,Len,_,Y)),L).L = [ab,g,az]と記述してしまっても差がない。member/2が副目標として追加されただけの差である。一般に Prolog に於いて高階述語を使ったmap述語はあまり使用されないが、Prologにはこのように強力なメタ述語 findall や setof が既に存在している。しかも、関数型言語のように引数が事前評価されることはなく、引数に関数を置いて渡すこともできないため、map述語の効用は関数型言語のようには大きくない。