CFMLで配列(Array)とか構造体(Struct)とかを横に伸ばして書きたい

CFMLをどうも本気でやらなければならない状況になってきている今日この頃です。
ところで、CFMLの配列の書き方がイヤなのです。とてもイヤです。
CFMLでの配列はこんな感じで作ります。

<cfset arr=ArrayNew(3) />
<cfset ArrayAppend("val1") />
<cfset ArrayAppend("val2") />
<cfset ArrayAppend("val3") />

縦に伸びていく。これがイヤなんです。横に伸ばしたいんです。こんな風に。

arr={"val1","val2","val3"}

ちょっと工夫して、こうしてみるのはどうか。

<cffunction name="text2Array" 
      output="false"
      returntype="array" >
  <cfargument name="text" type="string" required="true">
  <cfargument name="delimiter" type="string" required="false" default=",">
  <cfset var retArray=ArrayNew(1) />
  <cfloop index="row" list="#Trim(ARGUMENTS.text)#" delimiters="#ARGUMENTS.delimiter#">
    <cfset ArrayAppend(retArray, Trim(row)) />
  </cfloop>
  <cfreturn retArray >
</cffunction>

<cfset arr=text2Array("val1,val2,val3") />

あと、僕はハッシュの入った配列をよくつかうのです。
cfでも使いたい。
某だんこーがい氏が以前言及してたような感じで。

列1,列2,列3
値1,値2,値3
・
・
・

というわけで、こうしてみたらと思うのだが、どうか。

<cffunction name="text2StructArray" 
      output="false"
      returntype="array"
      hint="文字列を構造体の配列に変換します<br>1行目を要素名とし、それ以降の行を要素名に対応する値として変換します">
  <cfargument name="text" type="string" required="true">
  <cfargument name="delimiter" type="string" required="false" default=",">
  <cfset var retArray=ArrayNew(1) />
  <cfset var colArray="" />
  <cfloop index="row" list="#Trim(ARGUMENTS.text)#" delimiters="#Chr(10)##Chr(13)#">
    <cfif NOT IsArray(colArray) >
      <cfset colArray=ArrayNew(1) />
      <cfloop index="col" list="#Trim(row)#" delimiters="#ARGUMENTS.delimiter#">
        <cfset ArrayAppend(colArray, Trim(col)) />
      </cfloop>
    <cfelse>
      <cfset rowStruct=StructNew() />
      <cfset loopIdx=0 />
      <cfset rowstr=row />
      <cfloop index="val" list="#Trim(rowstr)#" delimiters="#ARGUMENTS.delimiter#">
        <cfset loopIdx=loopIdx+1 />
        <cfif loopIdx LE ArrayLen(colArray) >
          <cfset StructInsert(rowStruct, colArray[loopIdx], Trim(val)) />
        <cfelse>
          <cfthrow type="Application" 
            errorcode="argument-Exception" 
            message="rows doesn't agree with values." />
        </cfif>
      </cfloop>
      <cfset ArrayAppend(retArray, rowStruct) />
    </cfif>
  </cfloop>
  <cfreturn retArray >
</cffunction>

<!--- こう使う --->
<cfsavecontent variable="text" >
col1  ,col2  ,col3
val11 ,val12 ,val13
val21 ,val22 ,val23
val31 ,val32 ,val33
</cfsavecontent>

<cfset structArr=text2StructArray(text) />
<cfdump var="#structArr#" />
<!--- こんな感じになる
1:col1:val11
  col2:val12
  col3:val13
2:col1:val21
  col2:val22
  col3:val23
3:col1:val31
  col2:val32
  col3:val33   
--->

んーと、昼休み終わった・・・