John St. Clair wrote:
> The message below is being cross-posted from the LogoForum. Please
> reply here at comp.lang.logo and it will be cross-posted back to the
> LogoForum. The original author of this message is
> clemrutter@[EMAIL PROTECTED]
>
> I am still being asked the question: Is this a LOGO, or is this not a
> LOGO? This is usually followed by the question If this is not a LOGO,
> what do I need to do to make it LOGO? So can we as a group get
> together to make up a definitive definition, and put together may be 5
> one line tests that can be used to illustrate this?
>
> 1a. Basic syntax
>
> A test maybe: make "n 100 if 110 = sum first bf [ 7 10 23] :n [pr
> [VALID]]
Here's the first problem for aUCBLogo:
"=" has a different meaning in aUCBLogo.
So the comparison should be done by not using infix operators.
Maybe the whole test suite should avoid infix operators,
and should just check, if they are existing before testing them.
I have written many "checks" for aUCBLogo.
They could be some kind of basis for the tests,
if someone rewrites them a bit. I can do that, too.
But before we'd have to try to find
the greatest common set of primitives,
which could be used to write / rewrite the tests / checks.
(But of course the aUCBLogo checks are incomplete. :-/ )
Maybe we should meet in the Great Logo Atlas,
but someone must start there writing down the brainstorming session.
This could then be a place to look into
and a do***ent which could be rewritten many times.
Clem, can you place a basic article about
"The Logo standard discussion"
into the Atlas?
Then if anyone wants to contribute to it,
one can write to LogoForum, plus change the topic in the Atlas.
So the contributers need some kind of write access to the Atlas.
Can you set up some logins for those who want to contribute?
> 1b. Basic graphics
> A test may be: etc
>
> 2. Base system- both 1a and 1b validate
>
> 3. Base system with trig functions
>
> 4. UCB compliant
>
> 5. UCB compliant with extensions as listed.
>
> These are purely illustrative to start the conversation. But I
> envisage we developers could aim for the tests. We could then describe
> a logo as say 'Level 2 but missing the fill facility '.
I like more the idea "sets of compliant primitives",
as Pavel proposed. So one could ask a Logo:
doesLogoSup****t "turtle
true ;-)
doesLogoSup****t [Core Turtle Lists Turtle3D Workspace
Communication/minimal]
[true true true true true true] ;-)
I have written something like this already once here:
<http://groups.yahoo.com/group/LogoForum/message/13062>
Pavel, Brian, Lionel, David, ..., can we all implement this function?
We should all comply to "true and "false
as being accepted as boolean results.
I'd suggest some common sets,
which "doesLogoSup****t" should know,
(which might even overlap):
(I take this mostly from the aUCBLogo help, # is a comment)
(We can also make all items lowercase ones. We should discuss this!)
#________________________________________________________________________
Communication/Transmitters/minimal [print type show]
Communication/Receivers/minimal [readList readWord readChar]
Communication/TerminalAccess/minimal [KeyP clearText]
Communication/FileOpening/minimal [openRead openWrite openAppend
openUpdate allOpen setReader setWriter Reader Writer]
#we could of course also use setRead setWrite instead,
#then I'd make some copydefs in aUCBLogo
Communication/FileAccess/minimal [close closeall eraseFile renameFile
setReaderPos setWriterPos ReaderPos WriterPos EOFP FileP]
Communication/Directories/minimal [Files getWorkingDirectory changeDir
makeDirectory DirectoryP]
Communication/Environment/minimal [setEnv getEnv]
Communication/****tInputAndOutput/optional [****tIn ****tOut]
Communication/Timing/minimal [Time TimeMilli]
Communication/Timing/optional [TimeFine MIPS]
Communication/DynamicLibraries/optional [DLCall]
Communication/OperationSystem/minimal [LogoVersion doesLogoSup****t]
#Communication/minimal would contain all items of the minimal items
#________________________________________________________________________
Arithmetic/LogicalOperations/minimal [and or not]
Arithmetic/LinearOperations/minimal [Sum Difference Minus Product]
Arithmetic/NumericOperations/minimal [Quotient Modulo abs]
Arithmetic/NumericOperations/optional [min max]
Arithmetic/NumberGenerators/optional [iSeq rSeq]
Arithmetic/RandomNumbers/minimal [random]
Arithmetic/RandomNumbers/optional [reRandom rnd]
Arithmetic/IrrationalFunctions/minimal [sqrt power exp ln]
Arithmetic/IrrationalFunctions/optional [log10 Norm]
Arithmetic/TrigonometricFunctions/minimal [Sin Cos Tan ArcSin ArcCos
ArcTan]
Arithmetic/TrigonometricFunctions/optional [radSin radCos radTan
radArcSin radArcCos radArcTan]
Arithmetic/TypeConverters/minimal [Int]
Arithmetic/TypeConverters/optional [round trunc Signum]
Arithmetic/PrintFormatting/minimal [Form]
Arithmetic/BitwiseOperations/optional [BitAnd BitOr BitXOR BitNot]
Arithmetic/ArithmeticPredicates/minimal [lessP greaterP]
Arithmetic/ArithmeticPredicates/question [less? greater?]
Arithmetic/ArithmeticPredicates/optional [lessEqualP greaterEqualP primeP]
#________________________________________________________________________
DataStructurePrimitives/Constructors/minimal [Word List Sentence fPut
lPut combine]
DataStructurePrimitives/Constructors/optional [Array Table replace]
DataStructurePrimitives/Rearrangers/optional [reverse sort shuffle]
#"sort" is not yet defined in aUCBLogo. But it would be very useful.
DataStructurePrimitives/Selectors/minimal [first last butFirst butLast
Item]
DataStructurePrimitives/Selectors/optional [pick Items remove remDup]
DataStructurePrimitives/Mutators/minimal [setItem]
DataStructurePrimitives/Mutators/optional [setItems removeItem]
DataStructurePrimitives/Stacks/optional [push pop queue dequeue]
DataStructurePrimitives/Predicates/minimal [WordP ListP emptyP equalP
MemberP NumberP]
DataStructurePrimitives/Predicates/optional [ArrayP CharP beforeP
substringP]
DataStructurePrimitives/Queries/minimal [count char ASCII]
DataStructurePrimitives/Queries/optional [Member lowerCase upperCase]
DataStructurePrimitives/Queries/Objects [this]
#________________________________________________________________________
ConditionalExecution/minimal [if ifElse throw catch]
ConditionalExecution/optional [error test iftrue iffalse _maybeoutput]
#________________________________________________________________________
Loops/minimal [forever repeat repcount while for]
Loops/optional [until do_while do_until break continueLoop]
#________________________________________________________________________
VariableDefinition/minimal [make local Thing]
VariableDefinition/optional [localmake]
#________________________________________________________________________
ProcedureDefinition/minimal [to copyDef define]
ProcedureDefinition/optional [Text fullText]
#________________________________________________________________________
ControlStructures/minimal [stop output pause continue goTo Tag run bye]
ControlStructures/optional [ignore wait runResult check]
#________________________________________________________________________
TemplateBasedIteration/optional [apply foreach map filter find reduce
crossmap cascade transfer]
#________________________________________________________________________
WorkspaceManagement/WorkspaceQueries/minimal [Contents Primitives
Procedures Names Arity LogoLanguage]
WorkspaceManagement/Inspection/minimal [printOut]
WorkspaceManagement/WorkspaceControl/minimal [help save load]
WorkspaceManagement/WorkspaceControl/optional [setCaseIgnored]
WorkspaceManagement/WorkspacePredicates/minimal [ProcedureP PrimitiveP
definedP NameP]
WorkspaceManagement/WorkspacePredicates/optional [CaseIgnoredP]
WorkspaceManagement/Editing/optional [edit edall]
WorkspaceManagement/Erasing/minimal [erase]
WorkspaceManagement/Erasing/optional [erall reset]
WorkspaceManagement/Macros/optional [_Macro MacroP]
#________________________________________________________________________
Graphics/RelativeTurtleMotion/minimal [forward back left right]
Graphics/RelativeTurtleMotion/3d [leftRoll rightRoll upPitch downPitch]
Graphics/AbsoluteTurtleMotion/minimal [Home setXY setPos setHeading]
Graphics/AbsoluteTurtleMotion/optional [setX setY]
Graphics/AbsoluteTurtleMotion/3d [setXYZ setPosXYZ setOrientation]
Graphics/TurtleMotionQueries/minimal [Pos Heading Pixel]
Graphics/TurtleMotionQueries/optional [towards Distance]
Graphics/TurtleMotionQueries/3d [PosXYZ Orientation towardsXYZ
DistanceXYZ]
Graphics/TurtleControl/minimal [showTurtle hideTurtle]
Graphics/TurtleControl/optional [wrap Fence WindowMode]
Graphics/WindowControl/minimal [clean clearScreen]
Graphics/WindowControl/optional [TextScreen fullScreen splitScreen]
Graphics/WindowControl/3d [perspective setEye]
Graphics/TurtleAndWindowQueries/minimal [shownP]
Graphics/TurtleAndWindowQueries/optional [MousePos]
Graphics/PenAndBackgroundControl/minimal [PenDown PenUp setPenColor
setScreenColor]
Graphics/PenAndBackgroundControl/optional [setFloodColor setPenSize]
Graphics/PenQueries/minimal [PenDownP PenColor]
Graphics/PenQueries/optional [PenSize ScreenColor FloodColor]
Graphics/DrawingCurves/minimal [circle Arc]
Graphics/DrawingCurves/optional [Arc2 Ellipse EllipseArc]
Graphics/DrawingText/minimal [Label]
Graphics/DrawingText/optional [LabelSize setLabelSize LabelFont
setLabelFont LabelAlign setLabelAlign]
Graphics/DrawingFilledShapes/optional [fill fillRect fillCircle
fillEllipse fillPie]
Graphics/DrawingFilledShapes/3d/optional [Sphere Ellipsoid Cylinder
Polygon Surface]
Graphics/Lighting/3d [setLightPos]
Graphics/Pictures/optional [saveScreen setSaveSize]
Graphics/DirectGraphics/minimal [setPixel]
Graphics/DirectGraphics/optional [RGB HSB]
GUIprogramming/StandardDialogs/optional [MessageBox DirSelector
FileSelector getNumberFromUser getTextFromUser]
#________________________________________________________________________
SoundProgramming/PCSpeaker/optional [Tone Sound]
SoundProgramming/WaveSound/optional [playWave]
#________________________________________________________________________
This is just an idea,
but maybe we can develop something out of it.
Maybe we can use the file format of my ideas
as a file to work with in the Atlas?
> There are lots of issues- but could we have a go!
Yes! I hope this will start the discussion.
I'm currently trying to orthogonalise aUCBLogo as much as possible,
so that different features can be in separate modules,
maybe even in DLLs.
This might be a good time to adapt aUCBLogo to comply to any standard.
Cheers,
Andreas


|