02-28-2019
OpenSCAD is another purely functional language, though it doesn't look it at first. It looks more like C, with very different constraints on where you're allowed to do what. This causes a bit of brain damage at first ("why can't I overwrite variables!?" cried a million voices) but is good at illustrating what "functional language" means in a paradigm procedural programmers can understand. It's also got a nice orthogonal set of basic vector/matrix operations.
Having fought through and learned its ways, I agree that functional syntax is often simpler and more concise. It's rarely clearer -- comments are essential. And never in my experience have they ever been faster or smaller. Functional languages rely on things like compiler optimization and caching to reduce the amount of work for a given result. This amounts to big compilers/interpreters and occasionally unpredictable amounts of overhead. Tail recursion is a wondrous thing but so easy to poison!
That's the price you pay for a language one step closer to declaring what you want instead of declaring exactly how to do it. It's not a good fit for everything.
These 2 Users Gave Thanks to Corona688 For This Post:
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I have a simple script that I want to run every 30 minutes but only when I execute it. I don't want it to be a crontab job.
so i have for example
date
ls -l
who
sleep 1800
The first time it executes correctly but after the first time it nevers execute back again. It should execute after... (2 Replies)
Discussion started by: elchalateco
2 Replies
2. Shell Programming and Scripting
Anyone have an idea why this if statement does not work correctly?
"test2.sh" 18 lines, 386 characters
#!/usr/bin/sh
WARNING=80
CRITICAL=95
check_it()
{
if ] || ];then
echo "YES ] || ]"
else
echo "NO ] || ]"
fi
}
check_it 80.1
check_it 81.1 (3 Replies)
Discussion started by: 2dumb
3 Replies
3. Shell Programming and Scripting
Hi,
I have a script where I am trying to set a local variable using the following,
MYVAR="$NAME"_"$NAME2".txt
where say,
NAME = one
NAME2 = two
so I want the output one_two.txt but what I am getting is,
two.txt
basically the $NAME2 is overwriting, what am I doing wrong?
... (3 Replies)
Discussion started by: walsh_j
3 Replies
4. Programming
//save in/out
int tmpin = dup(0);
int tmpout = dup(1);
//set initial input
int fdin;
if(_inputFile)
{
fdin = open(_inputFile, O_RDONLY | O_CREAT, S_IREAD | S_IWRITE);
}
else
{
//use default input
fdin = dup(tmpin);
}
int ret;
int fdout;
for(int i = 0; i... (14 Replies)
Discussion started by: AirBronto
14 Replies
5. UNIX for Dummies Questions & Answers
egrep -A 7 -m 2 -h 'Date:|Time:' *.html
this is showing only 2 line after the context of the 2nd found match. Is this a bug in grep?
egrep -A 7 -m 2 -h 'Time:' *.html - this works correctly (2 Replies)
Discussion started by: zer0
2 Replies
6. Shell Programming and Scripting
I am trying to copy 2 types of files so I can archive them. I tested with a set of commands:
touch -t $(date -d "-60 day" +%Y%m%d) WORKDIR/REF
find TARGETDIR/ -type f -maxdepth 1 -iname \*.out\* -or -iname \*.log\* ! -newer WORKDIR/REF -exec ls -l {} \;
This correctly lists any files in the... (2 Replies)
Discussion started by: prismtx
2 Replies
7. Shell Programming and Scripting
We are using Red Hat linux system.
I am transferring my rman backup files to another server.
Here is the command i am using to transfer the files.
/usr/bin/rsync -avpP --delete /xyz/xyz/ 99.99.999.99::db110bkp
Here is the rsync version.
>rsync --version
rsync version 3.0.6 ... (1 Reply)
Discussion started by: govindts
1 Replies
8. UNIX for Dummies Questions & Answers
Consider the following code:
grep -o -e '^STEAM_::\d+$' workfile3.tmp
A sample format of a valid string for the regexp would be:
STEAM_0:1:12345678
Here is an example line from the workfile3.tmp file:
465:L 01/02/2012 - 00:05:33: "Spartan1-1-7<8><STEAM_0:1:47539638><>" connected
No... (2 Replies)
Discussion started by: spinner0205
2 Replies
9. Shell Programming and Scripting
Hi
I am attempting to right a script which will read a table and extract specfic information.
LASTFAILEDJOB=/usr/openv/netbackup/scripts/GB-LDN/Junaid/temp_files/lastfailedjob
cat /usr/openv/netbackup/scripts/GB-LDN/Junaid/temp_files/lastfailedjob
237308646
If i run the following... (5 Replies)
Discussion started by: Junes
5 Replies
10. UNIX for Dummies Questions & Answers
Hello All,
Yesterday, all day, I was using x11vnc and vncviewer to connect to a server. But today for some reason it is not working. I don't
remember changing any settings or anything like that, but because it stopped working correctly I guess something has...?
I'm issuing the exact same... (0 Replies)
Discussion started by: mrm5102
0 Replies
SEQ(1) BSD General Commands Manual SEQ(1)
NAME
seq -- print sequences of numbers
SYNOPSIS
seq [-w] [-f format] [-s string] [-t string] [first [incr]] last
DESCRIPTION
The seq utility prints a sequence of numbers, one per line (default), from first (default 1), to near last as possible, in increments of incr
(default 1). When first is larger than last the default incr is -1.
All numbers are interpreted as floating point.
Normally integer values are printed as decimal integers.
The seq utility accepts the following options:
-f format Use a printf(3) style format to print each number. Only the E, e, f, G, g, and % conversion characters are valid, along with
any optional flags and an optional numeric minimum field width or precision. The format can contain character escape sequences
in backslash notation as defined in ANSI X3.159-1989 (``ANSI C89''). The default is %g.
-s string Use string to separate numbers. The string can contain character escape sequences in backslash notation as defined in ANSI
X3.159-1989 (``ANSI C89''). The default is
.
-t string Use string to terminate sequence of numbers. The string can contain character escape sequences in backslash notation as
defined in ANSI X3.159-1989 (``ANSI C89''). This option is useful when the default separator does not contain a
.
-w Equalize the widths of all numbers by padding with zeros as necessary. This option has no effect with the -f option. If any
sequence numbers will be printed in exponential notation, the default conversion is changed to %e.
The seq utility exits 0 on success and non-zero if an error occurs.
EXAMPLES
# seq 1 3
1
2
3
# seq 3 1
3
2
1
# seq -w 0 .05 .1
0.00
0.05
0.10
SEE ALSO
jot(1), printf(1), printf(3)
HISTORY
The seq command first appeared in Plan 9 from Bell Labs. A seq command appeared in NetBSD 3.0, and ported to FreeBSD 9.0. This command was
based on the command of the same name in Plan 9 from Bell Labs and the GNU core utilities. The GNU seq command first appeared in the 1.13
shell utilities release.
BUGS
The -w option does not handle the transition from pure floating point to exponent representation very well. The seq command is not bug for
bug compatible with the Plan 9 from Bell Labs or GNU versions of seq.
BSD
February 19, 2010 BSD