Acrostic polyglot programming The challenge is to write an acrostic piece of code.

When read normally (horizontally), the code should take an input string and remove all but the first character on each line. For example, the input:

float
or and
ord
 line
bool var
auto
real


Output:

foo bar


In addition to this, the code also must contain valid code when run vertically. Such that applying the horizontal code on itself yields a new piece of valid code in a different language.

Rules/Restrictions:


Each horizontal line must contain at least 2 non-whitespace characters
The vertical code cannot use newlines.
The vertical code must be in a different language from the horizontal language, preferably something entirely different
The code does not have to be a complete program (doesn't need main function, etc)


What the vertical code does is up to you, although the goal is to have it do something interesting. Having it do nothing is not interesting.

Easy Mode:


You may use the same language both horizontally and vertically
No restrictions on language choice


Hard mode:


No comments
Both codes should compile and run (main function, etc)
Horizontal code contains exactly 1 word per line
Brainfuck -&gt; Ruby
e,
v[
a.
l&gt;
&quot;+
a[
=-&lt;,----------
[&gt;
i+
=&lt;
0[-]
]&gt;
*]
3,
e]
4[
;g
&quot;4
+d
$)
&lt;^
.%
b$
y@
ta
el
sD
.{
m[
a}
p]
{.
|d
bA
|:)
{y
?T
.K
,s
&quot;+
pG
up
th
c}
 P
a$
[v
iF
]o
&quot;d
,8
?t
,=
,h
&quot;3
ay
[&amp;
i*
]H
=s
gj
e9
t,
c&lt;
&quot;D
,d
?`
[q
,z
&quot;)
wT
hx
ie
lz
eW
 &gt;
a$
[^
i!
];
&gt;Y
0q
&quot;#
,T
?X
]A
,b
&quot;J
e$
n#
ds
&quot;K
,$
?}
&lt;?
,.
&quot;e
iJ
-W
=k
1B
&quot;&amp;
,J
?g
&gt;.
,&gt;
&quot;/
i@
+/
=s
1v
&quot;E
,)
?.
+8
,v
&quot;7
aS
[b
i$
]#
+5
=m
1w
&quot;3
,*
?u
-f
,Z
&quot;I
aW
[U
i%
]3
-v
=T
1E
&quot;:
}G
[;
b2
]@
};
*/
&quot;+
;M
&quot;B]

Horizontal is this little gem:
,[.&gt;+[-&lt;,----------[&gt;+&lt;[-]]&gt;],]

And Vertical is this:
eval&quot;a=[i=0]*3e4;&quot;+$&lt;.bytes.map{|b|{?.,&quot;putc a[i]&quot;,?,,&quot;a[i]=getc&quot;,?[,&quot;while a[i]&gt;0&quot;,?],&quot;end&quot;,?&lt;,&quot;i-=1&quot;,?&gt;,&quot;i+=1&quot;,?+,&quot;a[i]+=1&quot;,?-,&quot;a[i]-=1&quot;}[b]}*&quot;;&quot;

Which is a brainfuck interpreter stolen from this question. It qualifies for all of the hard mode criteria except the no comments bit, which I don't think is really fair to apply to brainfuck, or pretty much nothing but BF-&gt;BF would be possible.
Horizontal program runs till EOF(0) is read. Assumes newline at end of file.